2010-07-26 16 views
13

ben ViewDataASP.NET MVC - Geçiş Json dize ViewData

Kontrolör

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

görünümü kullanarak benim Görünüm Json geçmesine çalışıyorum kullanarak Görünüm

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

ama karşılaştığım sorun çıktı kaynağı

gibi görünüyor Açıkça doğru olmayan bir şekilde açık olan

. Temel bir şey eksik miyim?

cevap

19

Json() denetleyici yöntemi, JSON dizesiyle aynı olmayan bir JsonResult döndürür. JsonResult verileri tutar, ancak View Engine, JsonResult.ExecuteResult() öğesini çağırdığında, veriler doğrudan yanıtla doğrudan yazılır. Muhtemelen orada istediğinizden daha fazla bilgi var - buradaki nokta, bir denetleyicideki Json() öğesinin size bir JSON dizesi vermeyeceği.

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

'JavaScriptSerializer' Tanımlı değildir: sadece bir JSON dizeye verilerinizi açmak isterseniz

, sen Json() yöntemi dahili olarak kullandığı şeydir JavaScriptSerializer kullanabilirsiniz. Başka bir meclise başvurmam gerekiyor mu? –

+0

, System.Web.Extensions derlemesini projeme eklemem gerekiyormuş gibi görünüyor ... şimdi sınanıyor. –

+0

Ad alanı "System.Web.Script.Serialization" olmalı ve "RegionService.GetActiveRegions()" ürününü seri hale getirmelisiniz – JustinStolle