在ASP.NET MVC中将原始json数组生成到视图中

sor*_*rke 5 javascript asp.net-mvc json

我正在使用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;}
}
Run Code Online (Sandbox Code Playgroud)

...我想生成一个如下所示的javascript数组:

var infoList = [
      {
         Name = "...",
         ID = 1
      } ,
      {
         Name = "...",
         ID = 2
      },
      ....
      {
         Name = "...",
         ID = N
      }];
Run Code Online (Sandbox Code Playgroud)

有没有一个简洁明了的方法在视图中执行此操作,如果我尝试让模型生成json表示,我似乎在编码引号时遇到问题,所以目前我只能使用一些spaghetti /经典asp代码生成它我宁愿用漂亮的单线代替.

编辑:请注意,我不是要找一个控制器返回一个JsonResult,我想让我的视图包含一个javascript数组,该数组是从我的模型中生成的一行代码(如果可能的话)

编辑:我有一部分,但似乎在努力编码.视图中的此代码:

<script>
var list = <%: HtmlExtension.ToJson(Model.InfoList) %>;
</script>
Run Code Online (Sandbox Code Playgroud)

(其中ToJson使用JavaScriptSerializer封装转换为字符串)输出一些编码错误:

var info = [{&quot;Name&quot;:&quot;Low End&quot;,&quot;ID&quot;:1}];
Run Code Online (Sandbox Code Playgroud)

..这不是我想要的.我能做到这一点:

var info = <% Response.Write(HtmlExtension.ToJson(Model.InfoList)); %>;
Run Code Online (Sandbox Code Playgroud)

哪个有效,但看起来不那么闪亮.我应该明确地忽略所示的编码(输出是理智的,不是用户生成的,所以它可能不是问题)或者我是否遗漏了其他使得它不那么经典的asp?

Jon*_*tes 5

看来你有一个编码问题.我相信你有两个选择:

  1. 创建扩展程序时,请确保它返回MvcHtmlString而不是正常string,或者...
  2. 不使用<%: ... %>样式来编写代码,而是使用<%= ... %>不进行编码.