asp.net 如何在JavaScript中从Razor Model对象获取JSON对象

wvyml7n5  于 2023-10-21  发布在  .NET
关注(0)|答案(6)|浏览(232)

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

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

在VIEW中,JavaScript如下:

  1. var obj = JSON.stringify('@Model.CollegeInformationlist');
  2. alert(obj[1].State); //NOT WORKING, giving string char
  3. $.each('@Model.CollegeInformationlist', function (i, item) {
  4. var obj = JSON.stringify(item);
  5. var r = $.parseJSON(obj);
  6. alert(r.State); //just giving undefined.
  7. });

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

fumotvh3

fumotvh31#

您可以使用以下内容:

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

这将输出以下内容(在没有看到您的模型的情况下,我只包含了一个字段,假设@Model.CollegeInformationlist[{"State":"a state</script>"}]):

  1. <script>
  2. var json = [{"State":"a state\x3C/script>"}];
  3. </script>

请注意,Json.Encode()将输入中的"<"字符替换为"\x3C"。它们在JSON中是等效的,但后者可以安全地注入JavaScript代码,而前者是一个XSS漏洞。
Working Fiddle

AspNetCore

AspNetCore使用Json.Serialize代替Json.Encode

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

MVC 5/6

你可以使用Newtonsoft来实现:

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

这给了你更多的JSON格式控制,即。如上所述的缩进, Camel 套管等。

展开查看全部
7kjnsjlb

7kjnsjlb2#

在ASP.NET Core中,IJsonHelper.Serialize()返回IHtmlContent,因此您不需要将其 Package 为对Html.Raw()的调用。
它应该像这样简单:

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

cigdeys33#

使用后代码var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
你需要使用JSON.parse(JSON.stringify(json));

vs3odd8k

vs3odd8k4#

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

  1. @model IEnumerable<CollegeInformationDTO>
  2. @section Scripts{
  3. <script>
  4. var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
  5. </script>
  6. }
zxlwwiss

zxlwwiss5#

如果你想从你的模型中创建json对象,可以这样做:

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

或者使用Json.Net从你的模型中生成json:

  1. string json = JsonConvert.SerializeObject(person);
brc7rcf0

brc7rcf06#

下面的代码对我来说是有效的

  1. var chartD = JSON.parse(JSON.stringify([@Json.Serialize(@Model)]));

相关问题