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

新手上路,请多包涵

在 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 对象。

原文由 dsi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 572
2 个回答

您可以使用以下内容:

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

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

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

工作小提琴

网络核心

AspNetCore 使用 Json.SerializeJson.Encode

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

MVC 56

您可以为此使用 Newtonsoft:

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

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

原文由 hutchonoid 发布,翻译遵循 CC BY-SA 3.0 许可协议

在 ASP.NET Core 中, IJsonHelper.Serialize() 返回 IHtmlContent 所以你不需要通过调用 Html.Raw() 来包装它。

它应该很简单:

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

原文由 Rob Mensching 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题