2008-10-21 6 views
15

मैं एक ASP.NET MVC आवेदन में निम्नलिखित की तरह कुछ है:IEnumerable <string> को selectList, कोई मूल्य नहीं चुना जाता है

IEnumerable<string> list = GetTheValues(); 
var selectList = new SelectList(list, "SelectedValue"); 

और यहां तक ​​कि सोचा था कि चयनित मान परिभाषित किया गया है, यह दृश्य पर चयनित नहीं किया जा रहा है । मुझे यह एहसास है कि मैं यहाँ कुछ याद कर रहा हूं, इसलिए अगर कोई मुझे अपना दुख कह सकता है!

मुझे पता है कि मैं कुंजी और मूल्य की आपूर्ति के लिए एक कष्टप्रद प्रकार का उपयोग कर सकता हूं, लेकिन अगर मुझे ऐसा नहीं करना है तो मैं अतिरिक्त कोड नहीं जोड़ूंगा।

संपादित करें: यह समस्या एएसपी.नेट एमवीसी आरटीएम द्वारा तय की गई है।

+1

मेरी DDL ट्यूटोरियल http: // www। asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc और http://blogs.msdn.com/b/ रिकी/संग्रह/2012/01/09/कैस्केडिंग-ड्रॉपडाउनलिस्ट-इन-एएसपी-नेट-एमवीसीएसपीएक्स – RickAndMSFT

उत्तर

14

बजाय इस प्रयास करें:

IDictionary<string,string> list = GetTheValues(); 
var selectList = new SelectList(list, "Key", "Value", "SelectedValue"); 

selectList (कम से कम पूर्वावलोकन 5 में) काफी चालाक है कि IEnumerable के तत्वों मूल्य प्रकार के होते हैं और इसलिए यह दोनों मूल्य और पाठ के लिए आइटम का उपयोग करना चाहिए देखने के लिए नहीं है। इसके बजाय यह प्रत्येक आइटम का मान "शून्य" या ऐसा कुछ सेट करता है। यही कारण है कि चयनित मूल्य का कोई प्रभाव नहीं पड़ता है।

4

इस पर एक नज़र डालें: ASP.NET MVC SelectList selectedValue Gotcha

यह वही है किसी भी रूप में हो रहा है के रूप में अच्छा व्याख्या है।

+1

एफवाईआई, लिंक मर चुका है; ऐसा लगता है कि डोमेन की समयसीमा समाप्त हो गई है। – CBono

+0

उनके प्रश्न का उत्तर नहीं देता है –

14

तुम सिर्फ आप इस तरह इनलाइन यह कर सकते हैं एक IEnumerable<string>SelectList को मैप करने की कोशिश कर रहे हैं:

new SelectList(MyIEnumerablesStrings.Select(x=>new KeyValuePair<string,string>(x,x)), "Key", "Value"); 
+3

इसके बजाय। चयन करें (...), आप कर सकते हैं। टोपी (...) –

2

प्रयास करें इस

ViewBag.Items = list.Select(x => new SelectListItem() 
           { 
            Text = x.ToString() 
           }); 
+1

कुछ स्पष्टीकरण के साथ उत्तर दें –

संबंधित मुद्दे