आपके पास कम से कम दो विकल्प:
1.) अपने मॉडल के लिए एक सूची, सरणी, या शहर के किसी भी अन्य संग्रह प्रकार जोड़ें
2.) अपने मॉडल
विकल्प 1 स्ट्रिंग्स की सरणी के रूप में सरल कुछ हो सकता है, या City
ऑब्जेक्ट्स के IEnumerable
कह सकता है। आपको DropDownList
बाइंडिंग के हिस्से के रूप में दृश्य में SelectListItem
ऑब्जेक्ट्स के संग्रह में इस संपत्ति को बदलने की आवश्यकता होगी।
विकल्प 2 को DropDownList
पर सीधे बाध्यकारी करने में सक्षम होने का लाभ है, लेकिन यह आवश्यक है कि आप कार्रवाई विधि के भीतर सूची बनाएं।
फिर अंत परिणाम समान है, यह सिर्फ एक मामला है कि आप एसओसी के बारे में कितना pedantic होना चाहते हैं।
उदाहरण के लिए (यह मानते हुए कि आप एक संपत्ति Cities
बुलाया जोड़ने):
@Html.DropDownListFor(m=>m.City, Model.Cities.Select(city => new SelectListItem()
{
Text = city,
Value = city,
Selected = city == Model.City
})
संपादित करें:
अपनी टिप्पणी का जवाब करने के लिए, मैं कुछ मान्यताओं बनाने के लिए किया है। मुझे लगता है कि आपके पास EmployeeModel
नामक एक मॉडल है। इस मॉडल में एक संपत्ति है, City
, यह एक सादा स्ट्रिंग है। तो, यह अपने मॉडल की एक आंशिक है, के रूप में मुझे लगता है कि यह होने के लिए:
:
public class EmployeeModel
{
public string City { get; set; }
// ... other properties ...
}
तो, अगर आप अपने लटकती के लिए बाध्य करने के लिए एक संपत्ति जोड़ने की जरूरत है, तो आप निम्न में से एक करना होगा
public class EmployeeModel
{
public string City { get; set; }
public IEnumerable<string> Cities { get; set; }
// ... other properties ...
}
या
public class EmployeeModel
{
public string City { get; set; }
public SelectList Cities { get; set; }
// ... other properties ...
}
यह नया संपत्ति शहरों है कि आप अपने प्रयोक्ता (ओं) से चुन सकते हैं की सूची होगी।
आप पहला विकल्प चुनते हैं, तो आप अपने डेटास्टोर से IEnumerable लोड, और फिर अपने दृश्य है, जो एक नया SelectListItem
वस्तु में Cities
प्रॉपर्टी में एक स्ट्रिंग परियोजना के लिए LINQ का उपयोग करता है में ऊपर पहला उदाहरण का उपयोग करें।
यदि आप दूसरे विकल्प के साथ जाते हैं, तो आप दृश्य में मॉडल को पार करने से पहले कार्रवाई में SelectList
बनाते हैं। यह बहुत मुश्किल नहीं है, क्योंकि कक्षा एक रचनाकार प्रदान करती है जो IEnumerable
(शहरों की आपकी सूची) और "चयनित मूल्य" लेती है, जो City
संपत्ति होगी (http://msdn.microsoft.com/en-us/library/dd460123%28v=vs.108%29.aspx देखें)।
model.Cities = new SelectList(GetCities(), model.City);
यह, ज़ाहिर है, मान लिया गया है कि आप एक सहायक विधि (GetCities()
) चाहे वे कहीं भी जमा हो जाती है से अपने शहरों को लोड करने के लिए है: अपने कोड कुछ ऐसा दिखाई देगा। आपके विचार तो कुछ इस तरह होगा:
@Html.DropDownListFor(m=>m.City, model.Cities)
दृश्य इंजन तो इन SelectListItem
रों का उपयोग करता <select>
तत्व का निर्माण करने के लिए और इसे <option>
तत्वों है।
मूल्य कहां से आएंगे? क्या यह डेटाबेस तालिका में एक विदेशी कुंजी होना चाहिए, हार्डकोडेड मान, कुछ और? –
http://stackoverflow.com/questions/10484774/dropdown-in-mvc –