ASP.NET MVC - Пропустить Json String для просмотра с помощью ViewData

Я пытаюсь передать Json в свой просмотр с помощью ViewData​​p >

контроллер

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

вид

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

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

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

что, очевидно, неверно. Я пропустил что-то основное?

Ответы

Ответ 1

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

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

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