up vote 1 down vote favorite
1

I'm trying to pass Json to my View using ViewData

Controller

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

view

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

but the problem I'm running into is the output source looks like

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

which is obviously not right. Am I missing something basic?

link|flag

1 Answer

up vote 2 down vote accepted

The Json() controller method returns a JsonResult, which isn't the same as a JSON string. The JsonResult holds data, but the data is actually written directly to the response when the View Engine calls JsonResult.ExecuteResult(). That's all probably more information than you want there - the point is that calling Json() in a controller won't give you a string of JSON.

If you just want to turn your data into a JSON string, you can use the JavaScriptSerializer, which is what the Json() method uses internally:

JavaScriptSerializer serializer = new JavaScriptSerializer();
ViewData["JsonRegionList"] = serializer.Serialize(jsonRegionList); 
link|flag
JavaScriptSerializer is not Defined. Do I need to reference another assembly? – rockinthesixstring Jul 26 at 5:05
looks as though I had to add the System.Web.Extensions assembly to my project... testing now. – rockinthesixstring Jul 26 at 5:11

Your Answer

 
or
never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.