2012-07-05 11 views
19

में अक्षम ड्रॉप डाउन का मूल्य प्राप्त करें मेरे पास एक एएसपी.नेट एमवीसी एप्लीकेशन है। मेरे पृष्ठ (HTML SELECT) में कई ड्रॉप-डाउन सूची है, मुझे उन्हें अक्षम करना है, क्योंकि उपयोगकर्ता उन्हें एक-एक करके चुनते हैं। जब उपयोगकर्ता इसे नियंत्रक पर वापस पोस्ट करता है, तो मैं फ़ंक्शन (एक्शन विधि) पैरामीटर के रूप में शून्य हो रहा हूं। मैंने खोज की और पाया कि HTML फॉर्म डेटा में अक्षम फ़ील्ड का मान नहीं भेजता है। रीडोनली के साथ अक्षम विशेषता को प्रतिस्थापित करना काम नहीं करेगा क्योंकि यह ड्रॉप-डाउन काम करेगा।एएसपीएनटी एमवीसी

मैं उपयोगकर्ता के चलते जावास्क्रिप्ट का उपयोग करके गतिशील रूप से ड्रॉपडाउन उत्पन्न कर रहा हूं। तो एक भी ड्रॉपडाउन नहीं है, लेकिन जितना उपयोगकर्ता चाहता है।

क्या कोई मुझे बता सकता है कि मुझे मूल्य कैसे प्राप्त करना चाहिए?

उत्तर

40

एक संभावना यह ड्रॉपडाउन सूची disabled="disabled" बनाने के लिए और एक ही नाम और मान जो सर्वर के लिए यह मान भेजने के लिए अनुमति देगा के साथ एक छिपी हुई फ़ील्ड शामिल करने के लिए है:

@Html.DropDownListFor(x => x.FooId, Model.Foos, new { disabled = "disabled" }) 
@Html.HiddenFor(x => x.FooId) 

आप विकलांग लटकती गतिशील करने के लिए है, तो जावास्क्रिप्ट के साथ बस इसे अक्षम करने के बाद छिपे हुए क्षेत्र में ड्रॉपडाउन के वर्तमान में चयनित मान को असाइन करें।

3

यह अक्षम नियंत्रणों का डिफ़ॉल्ट व्यवहार है। मेरा सुझाव है कि आप एक छिपे हुए क्षेत्र को जोड़ने और इस छिपे हुए क्षेत्र में अपने ड्रॉपडाउनलिस्ट का मूल्य निर्धारित करें और इसके साथ काम करें।

कुछ की तरह:

//just to create a interface for the user 
@Html.DropDownList("categoryDump", (SeectList)ViewBag.Categories, new { disabled = "disabled" }); 
// it will be send to the post action 
@Html.HiddenFor(x => x.CategoryID) 
0

आप अपना स्वयं का DropDownListFor अधिभार जो एक bool disabled पैरामीटर स्वीकार करता है और आप के लिए भारी उठाने करता है बना सकते हैं तो आपके विचार if disablethisfield then ... से भरा नहीं है। इन पंक्तियों के बीच

कुछ कर सकता है:

public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, IEnumerable<SelectListItem> selectList, bool disabled) 
{ 
    if (disabled) 
     return MvcHtmlString.Create(htmlHelper.HiddenFor(expression).ToString() + htmlHelper.DropDownListFor(expression, selectList, new { disabled="disabled" }).ToString()); 
    else 
     return htmlHelper.DropDownListFor(expression, selectList); 
} 

अकेले DropDownListFor के लिए 6 भार के हैं तो यह monkeycoding का एक बहुत है, लेकिन यह अंत imho में बंद का भुगतान करती है।

-2

कॉल $ ('# FooId') सबमिट करने से पहले। RemoveAttr ('अक्षम')

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