2010-07-26 13 views
13

मैं ViewDataASP.NET MVC - दर्रा JSON स्ट्रिंग ViewData

नियंत्रक

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

दृश्य का उपयोग कर मेरी देखें Json पारित करने के लिए कोशिश कर रहा हूँ का उपयोग कर दृश्य

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

लेकिन जिस समस्या में मैं चल रहा हूं वह आउटपुट स्रोत

जैसा दिखता है
 $("input#UserRegion").autocomplete({ 
       source:"System.Web.Mvc.JsonResult", 
       minLength: 3, 

जो स्पष्ट रूप से सही नहीं है। क्या मुझे कुछ बुनियादी याद आ रही है?

उत्तर

19

जेसन() नियंत्रक विधि एक जेसनआरसल्ट लौटाती है, जो JSON स्ट्रिंग के समान नहीं है। JsonResult डेटा रखता है, लेकिन डेटा वास्तव में प्रतिक्रिया के लिए सीधे लिखा जाता है जब व्यू इंजन JsonResult.ExecuteResult() को कॉल करता है। यह संभव है कि आप वहां से कहीं अधिक जानकारी प्राप्त करें - बिंदु यह है कि एक नियंत्रक में जेसन() को कॉल करना आपको JSON की स्ट्रिंग नहीं देगा।

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

'JavaScriptSerializer' परिभाषित नहीं है:

तुम सिर्फ JSON स्ट्रिंग में अपने डेटा को चालू करना चाहते हैं, तो आप JavaScriptSerializer, जो क्या Json() विधि आंतरिक रूप से उपयोग करता है का उपयोग कर सकते हैं। क्या मुझे एक और असेंबली का संदर्भ देने की ज़रूरत है? –

+0

ऐसा लगता है कि मुझे अपने प्रोजेक्ट में System.Web.Extensions असेंबली जोड़नी पड़ी ... परीक्षण अब। –

+0

नामस्थान 'System.Web.Script.Serialization' होना चाहिए और आप अपने' RegionService.GetActiveRegions() ' – JustinStolle