Javascript 如何使用Razor将数组中的值输出到MVC中的视图? 任务

Javascript 如何使用Razor将数组中的值输出到MVC中的视图? 任务,javascript,asp.net-mvc,razor,ienumerable,Javascript,Asp.net Mvc,Razor,Ienumerable,从视图中简单类型的IEnumerable输出值 条件 我有一个由控制器传入的模型,它包含一个简单值数组(在本例中为int)。我想将其输出到视图中JavaScript块中的变量中 标准 在不使用大的foreach块并迭代每个项然后计算逗号的情况下,以类似于下面所示语句的方式输出值 例子 目前正在发生的情况是: View.cshtml 输出 我这样做的方式是使用JSON序列化程序,如JSON.NET。JSON代表JavaScript对象表示法,因此使用JSON序列化程序将C#/.NET对象转换为Ja

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

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

标准 在不使用大的foreach块并迭代每个项然后计算逗号的情况下,以类似于下面所示语句的方式输出值

例子 目前正在发生的情况是:

View.cshtml 输出
我这样做的方式是使用JSON序列化程序,如JSON.NET。JSON代表JavaScript对象表示法,因此使用JSON序列化程序将C#/.NET对象转换为JavaScript对象是很自然的

@using Newtonsoft.Json
@model MyNamespace.MyObject

var myProperty = @Html.Raw(JsonConvert.SerializeObject(Model.MyProperty));
如果
Model.MyProperty
是一个
列表
,包含整数
1、2、3
,Razor将按如下方式呈现:

var myProperty = [1,2,3];
var myProperty = {"X":"apple","Y":0.5};
如果
Model.MyProperty
是以下类的实例

class C
{
    public string X { get; set; }
    public double Y { get; set; }
}
X
设置为
apple
Y
设置为
0.5
时,Razor将如下呈现:

var myProperty = [1,2,3];
var myProperty = {"X":"apple","Y":0.5};

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

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

@using Newtonsoft.Json
@model MyNamespace.MyObject

var myProperty = @Html.Raw(JsonConvert.SerializeObject(Model.MyProperty));
如果
Model.MyProperty
是一个
列表
,包含整数
1、2、3
,Razor将按如下方式呈现:

var myProperty = [1,2,3];
var myProperty = {"X":"apple","Y":0.5};
如果
Model.MyProperty
是以下类的实例

class C
{
    public string X { get; set; }
    public double Y { get; set; }
}
X
设置为
apple
Y
设置为
0.5
时,Razor将如下呈现:

var myProperty = [1,2,3];
var myProperty = {"X":"apple","Y":0.5};

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

那么,为什么我花了45分钟才从一群自称精通MVC的家伙身上拖出下面的解决方案呢?@CodeWarrior这是一个非常常见的操作,将C#/.NET对象作为文本呈现到JS脚本中。我无法解释他们为什么花了这么长时间——也许他们还有一些东西要学。:)你们的人最终向你们展示了如何将
IEnumerable
呈现为JSON,但他们的解决方案很差,因为它部分实现了JSON序列化。如果要序列化
IEnumerable
,该怎么办?自定义对象?一本
字典
?显然,你应该为此使用通用JSON序列化程序。确实如此。我想我会删除我的“答案”并投票支持你。那么,为什么我要花45分钟从一群自称精通MVC的家伙身上拖出下面的解决方案呢?@CodeWarrior这是一个非常常见的操作,将C#/.NET对象作为文本呈现到JS脚本中。我无法解释他们为什么花了这么长时间——也许他们还有一些东西要学。:)你们的人最终向你们展示了如何将
IEnumerable
呈现为JSON,但他们的解决方案很差,因为它部分实现了JSON序列化。如果要序列化
IEnumerable
,该怎么办?自定义对象?一本
字典
?很明显,你应该为此使用一个通用的JSON序列化程序。的确。我想我会删除我的“答案”,并投票支持你的答案。