Подтвердить что ты не робот

Преобразование объекта в JSON в MVC 4

Я конвертирую объект в JSON с помощью JavaScriptSerializer, и я могу видеть этот вывод JSON в коде сервера:

[{"UserId":1,"UserName":"Admin"}]

Но в пользовательском интерфейсе он преобразуется в нечто вроде ниже

[{"UserId":1,"UserName":"Admin"}].

Как избежать этих "?

4b9b3361

Ответ 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. Я не уверен, что последнее более эффективно.