2011-11-16 13 views
5

मेरे पास सी # .NET MVC3 वेब ऐप है। मैं पूरे स्थान पर ड्रॉप डाउन सूचियों का उपयोग कर रहा हूं और सफलता प्राप्त कर रहा हूं। हालांकि, दो ऐसे हैं जिनके साथ मुझे परेशानी हो रही है। केवल अंतर यह है कि मैं लुकअप टेबल का उपयोग करने के बजाय कोड में फ्लाई पर SelectLists बना रहा हूं। मैं अन्य सभी ड्रॉप डाउन के लिए लुकअप टेबल का उपयोग करता हूं। जब मैं कोड में SelectLists को क्विकवॉच करता हूं, तो सही आइटम में Selected संपत्ति मान true पर सेट होता है। हालांकि, जब पृष्ठ लोड होता है, तो Selected संपत्ति वाला आइटम प्रदर्शित नहीं होता है। पहला आइटम है। कोई विचार? यह उन बेवकूफों में से एक है। मैंने नीचे दोनों तरीकों की कोशिश की है। दोनों मामलों में, ViewBag.DateToYear और selectList DateToYear सही मान हैं और की चुनी गई 'गुणएमवीसी 3 ड्रॉप डाउन सूची चयनित आइटम का चयन नहीं किया गया

1)

// नियंत्रक

 IList<string> dateToYear = new List<string>(); 
     for (int i = 0; i < numberYears; i++) 
     { 
      dateToYear.Add(DateTime.Now.AddYears(i).Year.ToString()); 
     } 
     ViewBag.DateToYear = new SelectList(dateToYear,"2014") 

// देखें

 @Html.DropDownList("DateFromYear", (SelectList)ViewBag.DateToYear) 
सेट

2) // नियंत्रक उपरोक्त

// देखें

List<SelectListItem> DateToYear = new List<SelectListItem>(); 
foreach (var m in ViewBag.DateToYear) 
{ 
    DateToYear.Add(new SelectListItem { Selected = @m.Selected, Value = @m.Text, Text = @m.Text }); 
} 

@Html.DropDownList("DateFromYear", DateToYear) 
+2

क्या आप कुछ कोड पोस्ट कर सकते हैं? –

+0

@ थॉमस .... क्या वह मदद करता है? – MikeTWebb

+0

क्या आपने DropDownListFor की कोशिश की है? आपके पास ए) के हिस्से के रूप में सिलेक्टलिस्ट विकल्प क्यों नहीं हैं) व्यूबैग या बी) दृढ़ता से टाइप किए गए दृश्य मॉडल? मैं यह नहीं देख रहा हूं कि आप इससे कैसे बाहर आ रहे हैं। –

उत्तर

5

ऐसा तो नहीं है, लेकिन मैं dropdownboxes कुछ दिन पहले चयनित हो रही नहीं के साथ कुछ समस्या थी सुनिश्चित नहीं हैं।

मेरी समस्या थी: मेरे पास @model.Options है और मैंने @html.dropdownlist("Options", @model.Options, [...]) बनाया है। हालांकि, क्योंकि उनके पास वही नाम था जो किसी भी तरह से विवादित था। जब मैंने @html.dropdownlist("anythingElse", @model.Options, [...]) का उपयोग किया तो यह ठीक काम करता था।

जब मैं क्विकवेटेड return View(model) चयनित विकल्पों को भी सही सेट करना प्रतीत होता था, तो इसे समझने में कुछ समय लगा। शायद आपको एक ही समस्या है?

+0

@ रॉन ... आप रॉक! वह यह था। मैन, यह क्लासिक बग – MikeTWebb

+0

है आपका स्वागत है। मैं खुशी से मदद कर सकता है। मुझे यह भी समझने में काफी लंबा लगा: पी –

+0

धन्यवाद यह मेरे लिए भी काम करता है ... –

6

समस्या यह है कि, चयनसूची डिज़ाइन के रूप में काम करती है। बग डिजाइन में है। आप चयनित संपत्ति को SelctedItem में सेट कर सकते हैं, लेकिन अगर आप GetEnumerator() के साथ सूची को पार करते हैं (या यदि एमवीसी आपके लिए करता है) तो यह पूरी तरह से अनदेखा कर दिया जाएगा। एमवीसी इसके बजाय नई selectfListItems बना देगा।

आपको SelectListItem [], टेक्स्ट-नाम, मान-नाम और चयनित वैल्यू के साथ सिलेक्टलिस्ट सीटीआर का उपयोग करना होगा। SelectListItem के VALUE को चयनित वैल्यू के रूप में पास करने के लिए सावधान रहें, जिसे आप चुनना चाहते हैं, SelectListItem स्वयं नहीं! उदाहरण:

क्यों न केवल नियंत्रक में करते हैं?

छद्म कोड:

// नियंत्रक

ViewBag.DateToYear = new SelectList(new[] 
{ 
new SelectListItem { Text = "10", Value = "10" }, 
new SelectListItem { Text = "15", Value = "15" } 
new SelectListItem { Text = "25", Value = "25" }, 
new SelectListItem { Text = "50", Value = "50" }, 
new SelectListItem { Text = "100", Value = "100" }, 
new SelectListItem { Text = "1000", Value = "1000" }, 
}, "SomeText", "Value", "15"); 

दूसरा विकल्प चुना जाना चाहिए।

+0

मैंने कोशिश की कि आप भी दृष्टिकोण कर रहे हैं और यह काम किया ... धन्यवाद – MikeTWebb

0

वही बात मेरे साथ भी हो रही थी, सुनिश्चित करें कि आप अपने मॉडल पर दिए गए संपत्ति नाम के समान आईडी नहीं देते हैं। इस तरह मैंने इस मुद्दे को हल किया ...

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