2010-07-26 11 views
13

que estoy tratando de pasar JSON para mi punto de vista usando ViewDataASP.NET MVC - Pass JSON cadena que desee ver con ViewData

controlador

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

vista

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

pero el problema que me estoy encontrando es que la fuente de salida se ve como

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

que obviamente no es correcto. ¿Me estoy perdiendo algo básico?

Respuesta

19

El método del controlador Json() devuelve un JsonResult, que no es lo mismo que una cadena JSON. El JsonResult contiene datos, pero los datos se escriben directamente en la respuesta cuando View Engine llama a JsonResult.ExecuteResult(). Probablemente todo eso sea más información de la que desea: la cuestión es que llamar a Json() en un controlador no le dará una cadena de JSON.

Si lo que desea es convertir sus datos en una cadena JSON, puede utilizar la JavaScriptSerializer, que es lo que el método JSON() utiliza internamente:

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

'JavaScriptSerializer' no está definido. ¿Debo hacer referencia a otra asamblea? –

+0

parece que tuve que agregar el ensamblado System.Web.Extensions a mi proyecto ... probando ahora. –

+0

El espacio de nombre debe ser 'System.Web.Script.Serialization' y debe serializar su' RegionService.GetActiveRegions() ' – JustinStolle

Cuestiones relacionadas