5

मैं एक परियोजना (डब्ल्यूसीएफ, लेकिन इससे कोई फर्क नहीं पड़ता) कह रहा हूं जो एमआईवी 3 (जो वास्तव में कोई फर्क नहीं पड़ता) के साथ एक आईएलआईस्ट का उपभोग करता है, मैं एक रूपांतरित करना चाहता हूं एकल स्तंभ तार की सूचीआईवीसी <string> को एमवीसी में बदलें। चयन करेंस्टीस्टीम को स्पष्ट कास्टिंग की आवश्यकता है

हार्ड कोडित सूची मैं इस तरह किया है और वे अच्छा काम एक सूची में (IList जो सिर्फ एक देशों की सूची में है):

public List<SelectListItem> mothermarriedatdelivery = new List<SelectListItem>(); 
mothermarriedatdelivery.Add(new SelectListItem() { Text = "Yes", Value = "1" }); 

हालांकि, अब मैं कन्वर्ट करने के लिए कोशिश कर रहा हूँ यह कोड:

public List<SelectListItem> BirthPlace { get; set; } 
BirthPlace = new List<SelectListItem>(); 
GetHomeRepository repo = new GetHomeRepository(); 
BirthPlace = repo.GetCountries(); 

मुझे सूची से selectListItem में पूरी तरह से रूपांतरित करने की आवश्यकता है, कोई भी ऐसा करता है? हां .. मैंने खोज की है और कई उदाहरण पाए हैं, लेकिन कोई भी जो मेरी विशिष्ट ज़रूरत को वास्तव में फिट नहीं करता है।

+0

आप एक संग्रह (IList) को एक ही आइटम (SelectListItem) में परिवर्तित नहीं कर सकते हैं। – joedotnot

उत्तर

18

आप इस तरह के रूप में LINQ का उपयोग कर सकते हैं:

BirthPlace = repo.GetCountries() 
       .Select(x => new SelectListItem { Text = x, Value = x }) 
       .ToList(); 

या मुझे लगता है कि तुम सिर्फ selectList के कन्स्ट्रक्टर्स से एक का उपयोग कर सकते हैं:

public SelectList BirthPlace { get; set; } 

BirthPlace = new SelectList(repo.GetCountries()); 
+0

कूल, उसने काम किया (लिंक) लेकिन दूसरा भाग नहीं। हालांकि मुझे रेज़र के साथ "मज़ा" है। कनवर्ट नहीं कर सकता प्रकार 'System.Collections.Generic.List ' 'System.Web.Mvc.SelectListItem' के लिए - @ Html.DropDownListFor (मॉडल => model.BirthPlace, Model.BirthPlace SelectListItem के रूप में) –

+1

रेज़र समस्या फिक्स्ड। फिर से धन्यवाद Laurent! –

0

नियंत्रक में,

var result = proxy.GetAllLocations(); 

    ViewBag.Area = result.Where(p => p.ParentId == null).Select(p => new SelectListItem { Text = p.LocationName, Value = p.LocationId.ToString() }).ToList(); 

    ViewBag.Locations = result.Where(p => p.ParentId != null).Select(p => new SelectListItem { Text = p.LocationName, Value = p.LocationId.ToString() }).ToList(); 

    return View(); 

देखें में,

@Html.DropDownList("LocationName", ViewData["Area"] as IEnumerable<SelectListItem>) 
संबंधित मुद्दे