如何从javascript中的Razor Model对象获取JSON对象

时间:2014-10-13 15:55:07

标签: javascript asp.net json asp.net-mvc asp.net-mvc-5

在viewmodel对象中,下面是属性:

  public IList<CollegeInformationDTO> CollegeInformationlist { get; set; }

在VIEW中,javascript如下:

   var obj = JSON.stringify('@Model.CollegeInformationlist');
   alert(obj[1].State);  //NOT WORKING, giving string char

      $.each('@Model.CollegeInformationlist', function (i, item) {
    var obj = JSON.stringify(item);
    var r = $.parseJSON(obj);
    alert(r.State);    //just giving undefined.
    });

请在这里指导,我如何在javascript中获取JSON对象。

5 个答案:

答案 0 :(得分:104)

您可以使用以下内容:

var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));

这将输出以下内容(未看到您的模型我只包含一个字段):

<script>
    var json = [{"State":"a state"}];   
</script>

Working Fiddle

<强> AspNetCore

AspNetCore使用Json.Serialize

Json.Encode个整数
var json = @Html.Raw(Json.Serialize(@Model.CollegeInformationlist));

MVC 5/6

您可以使用Newtonsoft:

    @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, 
Newtonsoft.Json.Formatting.Indented))

这使您可以更好地控制json格式,即如上所述缩进,camelcasing等。

答案 1 :(得分:2)

使用代码var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));

您需要使用JSON.parse(JSON.stringify(json));

答案 2 :(得分:1)

如果你想从yor模型中创建json对象,请执行以下操作:

  foreach (var item in Persons)
   {
    var jsonObj=["FirstName":"@item.FirstName"]
   }

或使用Json.Net从您的模型中制作json:

string json = JsonConvert.SerializeObject(person);

答案 3 :(得分:1)

在ASP.NET Core中,IJsonHelper.Serialize()返回IHtmlContent,因此您无需通过调用Html.Raw()来包装它。

应该如此简单:

<script>
  var json = @Json.Serialize(Model.CollegeInformationlist);
</script>

答案 4 :(得分:1)

将对象从控制器传递到视图,将其转换为无需编码的标记,然后将其解析为json。

@model IEnumerable<CollegeInformationDTO>

@section Scripts{
    <script>
          var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
    </script>
}