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

dsi*_*dsi 58 javascript asp.net asp.net-mvc json asp.net-mvc-5

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

  public IList<CollegeInformationDTO> CollegeInformationlist { get; set; }
Run Code Online (Sandbox Code Playgroud)

在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.
    });
Run Code Online (Sandbox Code Playgroud)

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

hut*_*oid 122

您可以使用以下内容:

var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
Run Code Online (Sandbox Code Playgroud)

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

<script>
    var json = [{"State":"a state"}];   
</script>
Run Code Online (Sandbox Code Playgroud)

工作小提琴

AspNetCore

AspNetCore使用Json.SerializeinteadJson.Encode

var json = @Html.Raw(Json.Serialize(@Model.CollegeInformationlist));
Run Code Online (Sandbox Code Playgroud)

MVC 5/6

您可以使用Newtonsoft:

    @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, 
Newtonsoft.Json.Formatting.Indented))
Run Code Online (Sandbox Code Playgroud)

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

  • 对于任何使用AspNetCore的人来说,使用`Json.Serialize`而不是`Json.Encode`. (11认同)
  • 对于较新版本的MVC 5/6` @ Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model,Newtonsoft.Json.Formatting.Indented))` (4认同)
  • @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented)) 为我工作 (2认同)

Rob*_*ing 11

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

它应该很简单:

<script>
  var json = @Json.Serialize(Model.CollegeInformationlist);
</script>
Run Code Online (Sandbox Code Playgroud)