如何使用Razor将数组中的值输出到MVC中的View?

Cod*_*ior 0 javascript asp.net-mvc ienumerable razor

任务

在视图中输出IEnumerable简单类型的值.

条件

我有一个模型,由控制器传入,包含一组简单值(在本例中为int).我想将它输出到视图中的JavaScript块中的变量中.

标准

在不使用大的foreach块并迭代每个项目然后找出逗号的情况下,输出值的方式类似于下面的语句.

var packageSummaryViewModel = new PackageSummaryViewModel([1,2,3,4,5,6,7]);
Run Code Online (Sandbox Code Playgroud)

目前正是这样:

View.cshtml

var packageSummaryViewModel = new PackageSummaryViewModel(@sensorIds);
Run Code Online (Sandbox Code Playgroud)

产量

var packageSummaryViewModel = new PackageSummaryViewModel(System.Int32[]);
Run Code Online (Sandbox Code Playgroud)

Tim*_*lds 6

我这样做的方法是使用JSON序列化程序,如JSON.NET.JSON代表JavaScript Object Notation,因此使用JSON序列化程序将C#/ .NET对象转换为Javascript对象是很自然的.

@using Newtonsoft.Json
@model MyNamespace.MyObject

var myProperty = @Html.Raw(JsonConvert.SerializeObject(Model.MyProperty));
Run Code Online (Sandbox Code Playgroud)

如果Model.MyPropertyList<int>包含整数1, 2, 3,Razor将呈现如下:

var myProperty = [1,2,3];
Run Code Online (Sandbox Code Playgroud)

If Model.MyProperty是以下类的实例

class C
{
    public string X { get; set; }
    public double Y { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

X设置为appleY设置为0.5,剃须刀将呈现此如下:

var myProperty = {"X":"apple","Y":0.5};
Run Code Online (Sandbox Code Playgroud)

关键是这种方法适用于您可能作为模型(或模型的一部分)传递的任何JSON可序列化的C#/ .NET对象.