2010-05-16 19 views
5

मैं MVCMVC: कैसे मैं DropDownListFor

<%= Html.DropDownListFor(c => c.Address.Id, new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), "-- New Address --", new { @name = "[" + orderItemAddressCount + "].AddressId" })%> 

में निम्नलिखित dropdownlist मैं dropdownlist पर नाम मान ओवरराइट कोशिश कर रहा हूँ है का उपयोग कर नाम मूल्य की घोषणा करते हैं।

इस

मैं मिल

<select id="Address_Id" name="Address.Id"><option value="">-- New Address --</option> 

यह मार्कअप मैं

<select id="Address_Id" name="[0].AddressId"><option value="">-- New Address --</option> 

मैं DropDownListFor का उपयोग कर नाम मूल्य कैसे घोषित करना चाहती है मार्कअप है?

उत्तर

10

आप DropDownListFor विधि द्वारा उत्पन्न नाम को ओवरराइड नहीं कर सकते हैं। यह दृढ़ता से टाइप किया गया है और यह नाम लैम्बडा पर आधारित है जिसे आप तर्क के रूप में पारित कर रहे हैं। आप उत्पन्न के नाम ओवरराइड करने के लिए जिस तरह से आप चाहते हैं आप या तो अपने स्वयं के एक्सटेंशन विधि लिख सकते हैं या उपयोग करना होगा चाहते हैं तो गैर दृढ़ता से टाइप किया DropDownList विधि:

<%= Html.DropDownList(
    "[0].AddressId", 
    new SelectList(Model.Addresses, "id", "Name", Model.Address.Id), 
    "-- New Address --") 
%> 

लेकिन तुम क्यों ऐसा करना चाहते हैं वैसे भी? जब आप फॉर्म जमा करते हैं तो क्या आप उसी व्यूमोडेल पर बाध्यकारी नहीं हैं?

+0

महान धन्यवाद डारिन, सभी सॉर्ट किए गए मैंने HTML.DropDownList का उपयोग किया। मैं पते के संग्रह के लिए बाध्यकारी था, इसलिए मुझे सूचकांक जोड़ने की जरूरत थी। [0] .AddressId। एक बार फिर धन्यवाद। – frosty

+0

"आप वैसे भी ऐसा क्यों करना चाहते हैं?" हमारे पास आंशिक विचारों के अंदर निहित संपादक टेम्पलेट्स हैं, इसलिए डिफ़ॉल्ट नाम गलत हैं (वे आंशिक दृश्य के सापेक्ष हैं)। हम आंशिक दृश्य चरण को छोड़ सकते हैं, लेकिन फिर हम प्रत्येक संपादक टेम्पलेट में बहुत सारे कोड को डुप्लिकेट करते हैं (हमारे पास कई टेम्पलेट्स हैं क्योंकि प्रत्येक तत्व के एक हिस्से का प्रदर्शन गुणों के आधार पर भारी रूप से बदलता है)। – PeterL

5

आप नाम में पूंजी एन का उपयोग कर Html.DropDownListFor पर नाम ओवरराइड कर सकते हैं। यह धागा देखें: https://stackoverflow.com/a/18344087

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