Многие из этих ответов действительно работают, но я нашел самый простой способ отправить данные через ViewData или ViewBag и позволить JSON.Net сериализовать его.
Я использую эту технику, когда необходим Javascript для генерации HTML до загрузки страницы или когда необходимо избегать служебных данных AJAX:
В контроллере:
public ActionResult MyController()
{
var addresses = myAddressesGetter();
ViewData["addresses"] = addresses ;
return View();
}
В представлении:
@section scripts {
<script type="text/javascript">
var MyjavascriptAddresses: @Html.Raw(JsonConvert.SerializeObject(ViewData["addresses"])),
</script>
}
Вы всегда можете полагаться на JSON.NET, тогда как некоторые браузеры имеют плохую поддержку десериализации JSON. Еще одно преимущество над некоторыми методами в том, что вы можете увидеть Javascript, используя ваш браузер View --> Source
, поскольку он просто написан на сервере с сервера.
Обратите внимание: в большинстве ситуаций веб-API - более элегантный способ получить JSON для клиента.