在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 对象。
您可以使用以下内容:
var json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
这将输出以下内容(没有看到你的模型,我只包含一个字段,假设
@Model.CollegeInformationlist
是 [{"State":"a state</script>"}]
):
<script>
var json = [{"State":"a state\x3C/script>"}];
</script>
Json.Encode()
将输入中的 "<"
字符替换为 "\x3C"
。它们在 JSON 中是等效的,但后者可以安全地注入 javascript 代码,而前者是 XSS 漏洞。
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 格式,即如上所述的缩进、驼峰式等。
在 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。
@model IEnumerable<CollegeInformationDTO>
@section Scripts{
<script>
var jsArray = JSON.parse('@Html.Raw(Json.Encode(@Model))');
</script>
}
如果你想从你的模型中创建 json 对象,请像这样:
foreach (var item in Persons)
{
var jsonObj=["FirstName":"@item.FirstName"]
}
或者使用 Json.Net 从模型中生成 json :
string json = JsonConvert.SerializeObject(person);
以下代码对我有用
var chartD = JSON.parse(JSON.stringify([@Json.Serialize(@Model)]));