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

IT技术 javascript asp.net json asp.net-mvc asp.net-mvc-5
2021-03-15 14:15:05

在 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个回答

您可以使用以下内容:

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

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

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

工作小提琴

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 格式,即上述缩进、驼峰式等。

我找不到 JSON 参考,收到错误消息,The name 'Json' does not exist in the current context 如果我添加,Newtonsoft.Json.Encode未找到。
2021-04-28 14:15:05
@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented)) 为我工作
2021-05-07 14:15:05
对于使用AspNetCore任何人,使用Json.Serialize代替Json.Encode
2021-05-14 14:15:05
对于较新版本的 MVC 5/6 @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented))
2021-05-17 14:15:05
@R2D2 对您的建议进行了补充说明:JsonConvert.SerializeObject(Model, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() })这也确保camelCase了序列化 JSON 的正确 JavaScript CamelCase(或者我应该说)。
2021-05-17 14:15:05

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

它应该很简单:

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

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

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

你为什么要JSON.stringifyJSON.parse陆续正确的?它不会被需要并且会浪费资源。
2021-04-22 14:15:05
小东西,但你应该在第二行格式化你的代码段。编辑太小了,所以它不会让我做。
2021-05-04 14:15:05
说得通。我需要测试是否在没有 JSON.stringify 的情况下工作。我认为这JSON.parse(@Html.Raw(Json.Encode(@Model.CollegeInformationlist)))应该有效。有人可以测试并告诉我们。但现在我使用这种方式并为我工作。
2021-05-08 14:15:05

如果您想从您的模型制作 json 对象,请执行以下操作:

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

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

string json = JsonConvert.SerializeObject(person);

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

@model IEnumerable<CollegeInformationDTO>

@section Scripts{
    <script>
          var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
    </script>
}
为什么要将结果用引号括起来,然后JSON.parse一个接一个?它不会被需要并且会浪费资源。
2021-05-18 14:15:05