ASP.NET MVC - передать строку Json для просмотра с использованием ViewData - PullRequest
13 голосов
/ 26 июля 2010

Я пытаюсь передать Json в View, используя ViewData

Контроллер

ViewData("JsonRegionList") = Json(RegionService.GetActiveRegions())

view

        $("input#UserRegion").autocomplete({
                source:"<%: ViewData("JsonRegionList").ToString %>",
                minLength: 3,

но проблема, с которой я сталкиваюсь, заключается в том, что источник вывода выглядит как

        $("input#UserRegion").autocomplete({
                source:"System.Web.Mvc.JsonResult",
                minLength: 3,

, что явно не так.Я что-то упускаю из виду?

1 Ответ

19 голосов
/ 26 июля 2010

Метод контроллера Json () возвращает JsonResult, который отличается от строки JSON. JsonResult содержит данные, но данные фактически записываются непосредственно в ответ, когда механизм просмотра вызывает JsonResult.ExecuteResult (). Это все, вероятно, больше информации, чем вы хотите - дело в том, что вызов Json () в контроллере не даст вам строку JSON.

Если вы просто хотите превратить ваши данные в строку JSON, вы можете использовать JavaScriptSerializer, который используется внутренним методом Json ():

JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewData["JsonRegionList"] = serializer.Serialize(jsonRegionList); 
...