2011-03-09 9 views
7

है, मुझे पंजीकरण पृष्ठ पर चयन सूची जोड़नी है। और मैं डेटबेस में चयनित आइटम को सहेजना चाहता हूं।'Inumerable <SelectListItem>' प्रकार का कोई व्यूडाटा आइटम नहीं है जिसमें कुंजी 'पेशे'

दृश्य पेज में:

<%: Html.DropDownListFor(m => m.Profession, (IEnumerable<SelectListItem>)ViewData["ProfessionList"])%>     
<%: Html.ValidationMessageFor(m => m.Profession)%> 

मॉडल कक्षा में: मैं ऐसा ही कुछ है

और नियंत्रक में:

ViewData["ProfessionList"] = 
       new SelectList(new[] { "Prof1", "Prof2", "Prof3", "Prof4", "Prof5"} 
       .Select(x => new { value = x, text = x }), 
       "value", "text"); 

और मैं त्रुटि हो रही है: वहाँ 'IENumerable' प्रकार का कोई व्यूडाटा आइटम नहीं है जिसमें कुंजी 'पेशे' है।

इसे काम करने के लिए मैं क्या कर सकता हूं?

+0

इसे "सिलेक्टलिस्ट" में कास्ट करें, आप इसे IENumerable ?? DropDownListFor विधियों selectList स्वीकार करता है। –

+0

मैंने इसे "सिलेक्टलिस्ट" में डाला, लेकिन मुझे एक ही त्रुटि मिलती है। मुझे लगता है कि यह आईन्यूमेरेबल की उम्मीद कर रहा है, इसलिए मैं इसका उपयोग क्यों कर रहा हूं। – Marta

उत्तर

8

में आप ऐसा देखने तुम बस selectList परिभाषित कर सकते हैं:

<%: Html.DropDownListFor(m => m.Profession, new SelectList(new string[] {"Prof1", "Prof2", "Prof3", "Prof4", "Prof5"}, "Prof1"))%> 
       <%: Html.ValidationMessageFor(m => m.Profession)%> 
12

मैं व्यूडाटा के बजाय दृश्य मॉडल के उपयोग की अनुशंसा करता हूं। तो:

public class MyViewModel 
{ 
    [Required] 
    [DisplayName("Profession")] 
    public string Profession { get; set; } 

    public IEnumerable<SelectListItem> ProfessionList { get; set; } 
} 

और अपने नियंत्रक में:

public ActionResult Index() 
{ 
    var professions = new[] { "Prof1", "Prof2", "Prof3", "Prof4", "Prof5" } 
     .Select(x => new SelectListItem { Value = x, Text = x }); 
    var model = new MyViewModel 
    { 
     ProfessionList = new SelectList(professions, "Value", "Text") 
    }; 
    return View(model); 
} 

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

<%: Html.DropDownListFor(m => m.Profession, Model.ProfessionList) %> 
<%: Html.ValidationMessageFor(m => m.Profession) %> 
संबंधित मुद्दे

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