asp.net mvc - tutorial - ड्रॉपडाउनलिस्ट के लिए मूल्य का चयन नहीं कर रहा है




mvc tutorial (5)

इस सवाल को संबोधित करते समय - यह भविष्य के googlers की मदद कर सकता है अगर वे मेरे विचार पथ का पालन किया:

मैं एक एकाधिक चयन चाहता था और DropDownListFor पर यह विशेषता हैक ऑटो चयन नहीं कर रहा था

Html.DropDownListFor(m => m.TrainingLevelSelected, Model.TrainingLevelSelectListItems, new {multiple= "multiple" })

इसके बजाय मुझे ListBoxFor का उपयोग करना चाहिए था जो सबकुछ काम करता था

Html.ListBoxFor(m => m.TrainingLevelSelected, Model.TrainingLevelSelectListItems)

मैं एक संपादन पृष्ठ के अंदर DropDownListFor सहायक विधि का उपयोग कर रहा हूं और मुझे निर्दिष्ट मूल्य का चयन करने के लिए कोई भाग्य नहीं मिल रहा है। मैंने स्टैक ओवरफ्लो पर एक समान प्रश्न देखा। सुझाया गया कामकाज था, "दृश्य कोड में अपनी चयन सूची को पॉप्युलेट करें"। समस्या यह है कि मैंने पहले ही यह कोशिश की है और यह अभी भी काम नहीं कर रहा है।

<%= Html.DropDownListFor(model => model.States, new SelectList(Model.States.OrderBy(s => s.StateAbbr), "StateAbbr", "StateName", Model.AddressStateAbbr), "-- Select State --")%>

मैंने ब्रेकपॉइंट सेट किया है और मॉडल के अस्तित्व (और वैधता) को सत्यापित किया है। एड्रेसस्टेटएब्र। मुझे यकीन नहीं है कि मैं क्या खो रहा हूं।


एक घंटे के लिए शोध करने के बाद, मुझे वह समस्या मिली जो चयनित को DropDownListFor सेट नहीं कर रही है। कारण यह है कि आप व्यूबैग के नाम का उपयोग मॉडल की संपत्ति के समान ही कर रहे हैं।

उदाहरण

public  class employee_insignia
{ 
   public int id{get;set;}
   public string name{get;set;}
   public int insignia{get;set;}//This property will store insignia id
}

// If your ViewBag's name same as your property name 
  ViewBag.Insignia = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);

राय

 @Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.Insignia, "Please select value")

चयनित विकल्प ड्रॉपडाउन सूची पर सेट नहीं होगा, लेकिन जब आप व्यूबैग के नाम को अलग-अलग नाम में बदलते हैं तो चयनित विकल्प सही दिखाएगा।

उदाहरण

ViewBag.InsigniaList = new SelectList(db.MtInsignia.AsEnumerable(), "id", "description", 1);

राय

 @Html.DropDownListFor(model => model.insignia, (SelectList)ViewBag.InsigniaList , "Please select value")

मेरे पास भी इसी तरह की समस्या है और मैं इसे निम्नानुसार हल करता हूं, सेट करता हूं

मॉडल। आपके नियंत्रक पर संपत्ति को उस स्थान पर सेट करता है जिसे आपको चुना जाना चाहिए

model.States = "कैलिफोर्निया"

और फिर आपको "कैलिफ़ोर्निया" डिफ़ॉल्ट मान के रूप में मिलेगा।


यदि आप इसे सही तरीके से कर रहे हैं और मॉडल का उपयोग कर रहे हैं - इन सभी व्यूबैग वीडियोज़ के विपरीत - और अभी भी समस्या को देखते हुए, ऐसा इसलिए है क्योंकि @Html.DropDownListFor(m => m.MyValue, @Model.MyOptions) MyValue मेल नहीं खा MyValue MyOptions में विकल्पों के साथ। इसके लिए दो संभावित कारण हैं:

  1. MyValue शून्य है। आपने इसे अपने व्यूमोडेल में सेट नहीं किया है। MyOptions एक को MyOptions एक Selected=true इसे हल नहीं करेगा।
  2. अधिक MyValue में, MyValue का प्रकार MyOptions के प्रकारों से अलग है। तो, अगर MyValue (int) 1 , लेकिन आपकी MyOptions गद्देदार तारों की एक सूची है {"01", "02", "03", ...} , यह स्पष्ट रूप से कुछ भी नहीं चुनने जा रहा है।

यह समस्या आम है। व्यूबैग प्रॉपर्टी का नाम दूसरे पर मॉडल वैरिएबल नाम को पेज पर इस्तेमाल करें।







asp.net-mvc