एक एमवीसी 3 अनुप्रयोग स्थापित करते समय, विदेशी कुंजी जो किसी आइटम का चयन करने के लिए ड्रॉप डाउन सूचियों को छोड़ने की अनुमति देनी चाहिए, ड्रॉप डाउन के रूप में प्रस्तुत नहीं की जाती है, बल्कि स्थिर इनपुट के रूप में। इसे कस्टम डिस्प्ले बनाकर और उस फ़ील्ड के लिए देखकर हल किया जा सकता है। हमें एक कस्टम आंशिक दृश्य बनाकर शुरू करना होगा जो "~/Views/Shared/displayTemplates/UserGuid.cshtml", और "~/Views/Shared/EditTemplates/UserGuid.cshtml" में रहेंगे। एक के लिए कोड के नीचे है:
@model Guid
@{
incMvcSite.Models.MvcSiteDB db = new incMvcSite.Models.MvcSiteDB();
incMvcSite.Models.SecUser usr = db.SecUsers.Single(u => u.Guid == Model);
}
@usr.Display
यह है कि संदर्भित तालिका में आइटम को देखने और यह प्रदर्शित करेगा टेम्पलेट के लिए एक प्रदर्शन है। हमें निम्नानुसार टेम्पलेट के लिए एक संपादन की भी आवश्यकता है:
@model Guid
@{
incMvcSite.Models.MvcSiteDB db = new incMvcSite.Models.MvcSiteDB();
SelectList items = new SelectList(db.SecUsers.OrderBy(i => i.Display).ToList(), "Guid", "Display", Model);
}
@Html.DropDownList("", items)
टेम्पलेट के लिए संपादन ड्रॉप डाउन सूची के रूप में लागू किया गया है। मूल रूप से, हमने स्थिर HTML कोड का उपयोग किया है, लेकिन समस्या "उपसर्ग" को लागू करने के लिए दिखाई देगी। स्टेटिक एचटीएमएल कोड एचटीएमएल हेल्पर्स द्वारा संभाला जाता है, इसलिए यह अनुशंसा की जाती है कि आप HTML.DropDownList() का उपयोग करें। नए प्रदर्शन और संपादित टेम्पलेट्स के लिए उपयोग करने के लिए MVC ढांचे के लिए मजबूर करने के लिए, हम अपने मॉडल आइटम annote एक निम्न पंक्ति जोड़ने की जरूरत: [UIHint ("UserGuid")]
यह MVC प्रदर्शन का उपयोग करने के कारण होगा और "UserGuid" नामक टेम्पलेट्स संपादित करें, जो केवल आंशिक विचार हैं।
स्रोत
2011-08-02 17:47:06
उत्तर के लिए धन्यवाद शानदार काम करता है। सिर्फ एक और सवाल अगर मेरे पास अलग-अलग बाल सूचियों के साथ दो अलग-अलग वस्तुएं हैं, तो खाते और लोगों दोनों के पास ऑब्जेक्ट का नाम होगा '1' आप दोनों के बीच अंतर कैसे करते हैं? या क्या आपको UIHint विशेषताओं का उपयोग करना है? – lancscoder
हाँ, दोनों एक ही होंगे।मुझे लगता है कि UIHint काम करेगा (कोशिश नहीं की है) लेकिन आप यह भी कर सकते हैं कि सूची टेम्पलेट जेनेरिक हो (कहें, आईनेमरेबल, गैर-जेनेरिक पर आधारित) और उसके बाद इसे * इसकी * सूची के अंदर DisplayFor पर कॉल करें और फिर सूची आइटम प्रत्येक में उनके उचित टाइप किए गए टेम्पलेट होंगे। आप भी, iirc, ओवरलोड में से किसी एक स्ट्रिंग के रूप में एक स्पष्ट टेम्पलेट नाम में पास कर सकते हैं। – Paul
(मार्कडाउन सिंटैक्स में शाब्दिक बैकटिक को ठीक करने के लिए संपादित किया गया।) –