2012-04-05 12 views
7

मेरे पास संग्रहीत प्रक्रिया की एक सूची है जिसमें आईडी और नाम डेटा है। मेरे पास मॉडल में int प्रकार की संपत्ति है और उसी संग्रहीत प्रक्रिया की एक सूची है। अब मैं ListBoxForएमवीसी 3 में ListBoxFor को कैसे पॉप्युलेट करें?

ध्यान में रखते हुए

में इस जानकारी के लिए बाध्य करना चाहते हैं मैं इस

@Html.ListBoxFor(x => x.HobbyId, new MultiSelectList(Model.listHobby, "pkHobbyId", "Hobby")) 

लिखा है, लेकिन मैं एक त्रुटि

पैरामीटर 'अभिव्यक्ति' एक IEnumerable करने का मूल्यांकन करना चाहिए हो रही है जब एकाधिक चयन की अनुमति है।

कृपया बाध्य करने में सहायता करें।

+0

वापसी मॉडल भी पोस्ट करें। सूची किस प्रकार है? आप इसे मूल्य कैसे सेट करते हैं? – Iridio

उत्तर

7

कोशिश है कि

@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

listHobby अगर मैं आप को गुमराह, जवाब देने के लिए पहुंचे मेरी नमूना पर IEnumerable सूची है


खेद है, लेकिन आप एक GUID में एकाधिक चयन करें लिस्टबॉक्स का परिणाम नहीं मिल सकता है या int वैरिएबल (जो भी प्रकार आपका होबीआईआईडी है) आपको

public string[] SelectedHobbyIds { get; set; } 
जैसे परिणाम को पकड़ने के लिए एक सरणी होनी चाहिए

तो वहाँ कुछ अपने दृश्य मॉडल के साथ कुछ गड़बड़ होना चाहिए, ताकि इसके बेहतर है कि यू आपके विचार मॉडल पोस्ट होगा

+0

हां, मुझे लगता है कि मैं शौक आईडी में मूल्य वापस कर रहा हूं जो int की है जबकि मुझे संग्रह में वापस जाना है। – Rachit

3
@Html.ListBoxFor(x => x.HobbyId, Model.listHobby.Select(f => new SelectListItem { Text = f.Hobby, Value = f.pkHobbyId.ToString() }), new { Multiple = "multiple" }) 

क्योंकि आपके द्वारा सेट बहु का चयन

+0

यह मेरे लिए काम नहीं करता // नियंत्रक सार्वजनिक एक्शन रिसेट AddEditSupplier (int id) { clsSupplier _supp = new clsSupplier(); _supp.lstDocImgs = _supp.listDocImages(); // यह ठीक काम कर रहा है _supp.lstDocFiles = _supp.listDocFiles(); // यह ठीक काम कर रहा है वापसी देखें (_supp); } // देखें लेकिन ध्यान में रखते हुए दोनों काम नहीं कर रहे @ Html.ListBoxFor (x => x.DocumentId, नई selectList (Model.lstDocImgs, "documentid", "शीर्षक")) @Html।ListBoxFor (x => x.DocumentId, Model.lstDocImgs.Select (f => नया selectListItem {text = f.Title, value = f.documentid.ToString()}), नया {एकाधिक = "एकाधिक"}) –

5

@ छत्रपति शर्मा अभिव्यक्ति में HobbyId IEnumerable होना चाहिए जाँच की जानी,

अपने नियंत्रक में, यह कोशिश करते हैं,

ViewData['anyName'] = new SelectList { 
Text = , // text from ur function 
Value = , // Value from function 
Selected = // if required 
} 

और ध्यान में रखते हुए, ViewData बाँध की तरह,

<@Html.ListBox("docImages", ((IEnumerable<SelectListItem>)ViewData["anyName"])) 

परीक्षण के लिए, इस प्रकार एक नमूना selectList आइटम कोशिश

ViewData['anyName'] = new List<SelectListItem>{ 
       new SelectListItem {Text = "First", Value = "0"}, 
       new SelectListItem {Text = "Second"), Value = "1"}, 
       new SelectListItem {Text = "Third", Value = "2"} 
        }; 

यदि यह नमूना काम करता है, तो अपने समारोह जाँच "_supp.listDocImages()" और सुनिश्चित करें कि यह IList

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