を使用してオブジェクトを JSON に変換していますJavaScriptSerializer
。サーバー コードでこの JSON 出力を確認できます。
[{"UserId":1,"UserName":"Admin"}]
しかし、UIでは以下のようなものに変換されています
[{"UserId":1,"UserName":"Admin"}].
それらをエスケープする方法は"
?
を使用してオブジェクトを JSON に変換していますJavaScriptSerializer
。サーバー コードでこの JSON 出力を確認できます。
[{"UserId":1,"UserName":"Admin"}]
しかし、UIでは以下のようなものに変換されています
[{"UserId":1,"UserName":"Admin"}].
それらをエスケープする方法は"
?
Razor ビュー エンジンを使用している場合は、次のHtml.Raw
メソッドを使用する必要があります。
<script type="text/javascript">
var model = @Html.Raw(Json.Encode(Model));
</script>
Json.Encode
と同等で短いメソッドの使用法に注意してくださいnew JavaScriptSerializer().Serialize()
。
どうしてそんなことをするのか?を返さないのはなぜJsonResult
ですか?
public ActionResult MyMethod()
{
List<ListItem> list = new List<ListItem>() {
new ListItem() { UserId = "1", UserName = "Admin" },
new ListItem() { UserId = "2", UserName = "JohnDoe" },
new ListItem() { UserId = "3", UserName = "JaneDoe" }};
return this.Json(list);
}
Darin Dimitrovの答えについてもう1つ。私の VS2012 では、セミコロンでコンパイル エラーが発生します。これは、JS 側のステートメントが実際には「var model = ;」であるためです。次のように Razor パーツをラップするために引用符のペアを使用する方法:
var model = "@Html.Raw(Json.Encode(Model))";
これにより、エラーは発生しません。
Json.Encode() は JavaScriptSerializer のラッパー関数のようです。後者の方が時間効率が良いかどうかはわかりません。