Я использую ASP.NET MVC и пытаюсь сгенерировать фрагмент JavaScript как часть рендеринга представления.У меня есть модель, которая представляет массив простых типов, и я хотел бы сгенерировать эквивалентный массив javascript / json в представление, чтобы я мог работать с ним, используя jQuery.Поэтому, учитывая следующую модель:
public class Info {
public string Name {get;set;}
public int ID {get; set;}
}
public class InfoModel{
public Info[] InfoList {get;set;}
}
... Я хотел бы создать массив javascript, похожий на этот:
var infoList = [
{
Name = "...",
ID = 1
} ,
{
Name = "...",
ID = 2
},
....
{
Name = "...",
ID = N
}];
Есть ли хороший и краткий способ сделать это вПохоже, у меня возникнут проблемы с кодировкой кавычек, если я попытаюсь сгенерировать модель в формате json, поэтому в настоящее время я могу сгенерировать ее только с использованием некоторого спагетти / классического кода asp, который я бы предпочел заменить на хорошийliner.
EDIT: обратите внимание, что я не ищу, чтобы контроллер возвращал JsonResult, я хочу, чтобы мое представление содержало массив JavaScript, сгенерированный из моей модели, в одну строкукод (если возможно)
РЕДАКТИРОВАТЬ: Я получил часть пути, но, похоже, борется с кодированием.Этот код в представлении:
<script>
var list = <%: HtmlExtension.ToJson(Model.InfoList) %>;
</script>
(где ToJson инкапсулирует преобразование в строку с использованием JavaScriptSerializer) выводит некоторые ошибки кодирования:
var info = [{"Name":"Low End","ID":1}];
.. что не то, что я искал.Я мог бы сделать это:
var info = <% Response.Write(HtmlExtension.ToJson(Model.InfoList)); %>;
, который работает, но не выглядит блестящим.Должен ли я явно игнорировать кодировку, как показано (Вывод является нормальным, а не сгенерированным пользователем, так что это не может быть проблемой), или я пропускаю что-то еще, что делает его менее классическим asp?