Преобразование объекта в JSON в MVC 4
Я конвертирую объект в JSON с помощью JavaScriptSerializer
, и я могу видеть этот вывод JSON в коде сервера:
[{"UserId":1,"UserName":"Admin"}]
Но в пользовательском интерфейсе он преобразуется в нечто вроде ниже
[{"UserId":1,"UserName":"Admin"}].
Как избежать этих "
?
Ответы
Ответ 1
Если вы используете механизм просмотра Razor, вам нужно использовать метод Html.Raw
:
<script type="text/javascript">
var model = @Html.Raw(Json.Encode(Model));
</script>
Обратите внимание на использование метода Json.Encode
, который короче и эквивалентен new JavaScriptSerializer().Serialize()
.
Ответ 2
Зачем ты это делаешь? Почему бы просто не вернуть 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);
}
Ответ 3
На Дарина Димитрова ответит еще одна вещь. В моем VS2012 есть ошибка компиляции с точкой с запятой, потому что утверждение со стороны JS фактически является "var model =;".
Способ использования пары цитат для обертывания части Razor следующим образом:
var model = "@Html.Raw(Json.Encode(Model))";
Это не вызовет никаких ошибок.
Json.Encode(), похоже, является оберточной функцией JavaScriptSerializer. Я не уверен, что последнее более эффективно.