2013-12-13 7 views
10

मेरी ViewModel में मेरे पास है:ASP.NET MVC + आबाद DropDownList

public class PersonViewModel 
{ 
    public Person Person { get; set; } 
    public int SelectRegionId { get; set; } 
    public IEnumerable<SelectListItem> Regions { get; set; } 
} 

लेकिन क्या मैं अपने नियंत्रक/देखें में करने के लिए मूल्यों को दिखाने के लिए क्या है? क्या मैं अब है:
नियंत्रक:

public ActionResult Create() 
{ 
    var model = new ReUzze.Models.PersonViewModel 
    { 
     Person = new Person(), 
     Regions = new SelectList(this.UnitOfWork.RegionRepository.Get(), "Id", "Name") 
    }; 
    return View(model); 
} 

दृश्य:

<div class="form-group"> 
    @Html.LabelFor(model => model.Person.Address.Region) 
    @Html.DropDownListFor(model => model.SelectRegionId, new SelectList(Model.Regions, "Id", "Name"), "Choose... ") 
</div> 

लेकिन यह इस तरह एक त्रुटि देता है:

Cannot implicitly convert type 'System.Web.Mvc.SelectList' to 'System.Collections.Generic.IEnumerable<System.Web.WebPages.Html.SelectListItem>'. An explicit conversion exists (are you missing a cast?) 
+0

आप आप प्राप्त कर रहे त्रुटि संदेश जोड़ सकते हैं? – MattC

+0

मॉडल में क्षेत्र की संपत्ति वस्तुओं की एक सामान्य सूची होना चाहिए। इसे एक चयन सूची में सेट न करें। – Slavo

+0

आप व्यूबैग का उपयोग दृश्य सूची में डेटा भेजने के लिए भी कर सकते हैं और उसके बाद ड्रॉपडाउन सूची को बाध्य कर सकते हैं। देखें http://www.yogihosting.com/blog/populate-dropdownlist-with- गतिशील-values-in-asp-net-mvc/ – yogihosting

उत्तर

12

आपका ViewModel प्रकार 'IEnumerable' की एक संपत्ति है, लेकिन selectList उस प्रकार को पूरा नहीं करता है। इस तरह अपने कोड में परिवर्तित करें:

public class PersonViewModel 
{ 
    public Person Person { get; set; } 
    public int SelectRegionId { get; set; } 
    public SelectList Regions { get; set; } 
} 

दृश्य:

<div class="form-group"> 
    @Html.LabelFor(model => model.Person.Address.Region) 
    @Html.DropDownListFor(model => model.SelectRegionId, Model.Regions, "Choose... ") 
</div> 
7

आप दो बार selectList उदाहरण पैदा कर रहे । उनमें से एक से छुटकारा:

@Html.DropDownListFor(model => model.SelectRegionId, Model.Regions, "Choose... ")