【发布时间】:2010-11-03 08:36:14
【问题描述】:
我正在使用 ASP.NET MVC,我正在尝试生成一段 javascript 作为视图渲染的一部分。我有一个模型,它公开了一个简单类型的数组,我想在视图中生成一个 javascript/json 等效数组,以便我可以使用 jQuery 对其进行操作。所以给定以下模型:
public class Info {
public string Name {get;set;}
public int ID {get; set;}
}
public class InfoModel{
public Info[] InfoList {get;set;}
}
...我想生成一个如下所示的 javascript 数组:
var infoList = [
{
Name = "...",
ID = 1
} ,
{
Name = "...",
ID = 2
},
....
{
Name = "...",
ID = N
}];
在视图中是否有一种简洁明了的方式来执行此操作,如果我尝试让模型生成 json 表示形式,我似乎无法对引号进行编码,所以目前我只能使用一些意大利面条/我宁愿用漂亮的单行代码代替经典的 asp 代码。
编辑:请注意,我不希望让控制器返回 JsonResult,我想要一种方法让我的视图包含从我的模型在单行代码中生成的 javascript 数组(如果可能的话)
编辑: 我取得了部分进展,但似乎在编码方面遇到了困难。视图中的这段代码:
<script>
var list = <%: HtmlExtension.ToJson(Model.InfoList) %>;
</script>
(ToJson 使用 JavaScriptSerializer 封装转换为字符串)输出一些编码错误:
var info = [{"Name":"Low End","ID":1}];
..这不是我想要的。我可以这样做:
var info = <% Response.Write(HtmlExtension.ToJson(Model.InfoList)); %>;
有效,但看起来不那么闪亮。我应该如图所示显式忽略编码(输出是正常的,不是用户生成的,所以它可能不是问题)还是我错过了其他使它不那么经典的 asp 的东西?
【问题讨论】:
标签: javascript asp.net-mvc json