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));
これにより、次が出力されます(モデルが表示されることなく、1つのフィールドのみが含まれています)。
<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の書式設定、つまり上記のインデント、キャメルケースなどをより細かく制御できます。
使用後codevar json = @Html.Raw(Json.Encode(@Model.CollegeInformationlist));
使用する必要があるJSON.parse(JSON.stringify(json))
;
ASP.NET Coreでは、 IJsonHelper.Serialize() はIHtmlContent
を返すため、Html.Raw()
への呼び出しでラップする必要はありません。
次のようにシンプルにする必要があります。
<script>
var json = @Json.Serialize(Model.CollegeInformationlist);
</script>
Yorモデルの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>
}