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

131980 次浏览

You could use the following:

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

This would output the following (without seeing your model I've only included one field):

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

Working Fiddle

AspNetCore

AspNetCore uses Json.Serialize intead of Json.Encode

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

MVC 5/6

You can use Newtonsoft for this:

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

This gives you more control of the json formatting i.e. indenting as above, camelcasing etc.

If You want make json object from yor model do like this :

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

Or Use Json.Net to make json from your model :

string json = JsonConvert.SerializeObject(person);

In ASP.NET Core the IJsonHelper.Serialize() returns IHtmlContent so you don't need to wrap it with a call to Html.Raw().

It should be as simple as:

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

After use codevar json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));

You need use JSON.parse(JSON.stringify(json));

Pass the object from controller to view, convert it to markup without encoding, and parse it to json.

@model IEnumerable<CollegeInformationDTO>


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

The following code worked for me

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