2009-02-03 13 views
75

के साथ एएसपी.नेट एमवीसी ड्रॉपडाउन क्या ड्रॉपडाउन सूची के लिए कोई चयनित मूल्य नहीं है तो डिफ़ॉल्ट खाली विकल्प (या पाठ के साथ) को शामिल करने का कोई तरीका है?एक डिफ़ॉल्ट खाली विकल्प

उत्तर

123

नीचे स्ट्रिंग प्रीपेड करेगा। व्यूडाटा ["मेनू"] आइटम में निर्दिष्ट SelectList (या IEnumerable) के लिए लक्षण। चयन में आईडी और नाम MenuID होगा।

<%= Html.DropDownList("MenuID", 
         (IEnumerable<SelectListItem>)ViewData["Menu"], 
         string.Empty) %> 

प्रलेखन: DropDownList method

+12

धन्यवाद। डिफ़ॉल्ट विकल्प के लिए विकल्प लेबल का पैरामीटर नाम मुझे फेंक दिया :) –

+4

गीज़ ... मैं भी मैं अपनी खुद की सहायक विधि लिखना शुरू कर रहा था ... बकवास नाम IMHO - लगता है जैसे यह

+1

छोटे टाइपो: को पढ़ना चाहिए HerbalMart

-5

यहां प्रस्तुत समाधान मेरे लिए बहुत अच्छी तरह से काम: http://forums.asp.net/t/1142484.aspx/1

मूल विचार है कि आप अपने DropDownListtrue के AppendDataBoundItems गुण सेट और फिर एक asp:ListItem में डाल कि है DropDownList और यह आपके डिफ़ॉल्ट आइटम बन जाएगा जिसके बाद आने वाले सभी डेटाबेस आइटम आते हैं।

ध्यान में रखते हुए :

@{ 
    Model.ModelItemsList.Add(new ModelItem{ }); 
    SelectList modelItemSelectList = new SelectList(Model.ModelItemsList, "ModelItemID", "ModelItemName"); 
} 

बस List<> आप अपने दृश्य में प्रदर्शित करना चाहते हैं के लिए एक नया आइटम जोड़ने

+4

'-1' यह एएसपी.नेट वेब फॉर्मों के लिए है, एमवीसी नहीं। – JoeBrockhaus

0

यह आसान समाधान मेरी mvc5 परियोजना के लिए काम किया। मेरे मामले में, मैंने अपने List<ModelItem> ModelItemList पर एक खाली "मॉडलइटम" जोड़ा। चूंकि मेरा ModelItemID एक ग्रिड है, इसलिए मुझे अपने नियंत्रक विधि में Guid.Empty की जांच करनी थी और कुछ कोड करना था। सब कुछ है।

6

उदाहरण के लिए:

Controller : 

    private void InitScreenInfoCollate() 
    { 
     IEnumerable<MstBrd> listbrd = ibrandRepository.GetItemsByUsercode(""); 
     ViewBag.Brands = new SelectList(listbrd, "brd_cod", "brd_mei", null); 

    } 

    View : 
    @Html.DropDownList("Brands", null, string.Empty, new { @class = "form-control"}) 

परिणाम:

inline image