2014-07-09 6 views
5

स्थापना ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix सभी nameऔरid विशेषताओं पहले जोड़ें होगा।सेट HtmlFieldPrefix लेकिन नाम नहीं

मुझे आश्चर्य है कि id को उपसर्ग करने का कोई तरीका है और name अकेले छोड़ दें।

परिदृश्य यह है: पृष्ठ पर AJAX द्वारा कई बार आंशिक दृश्य लोड किया जा रहा है। एक जावास्क्रिप्ट लाइब्रेरी जिसका उपयोग हम कर रहे हैं, id एस के उपयोग की आवश्यकता है, लेकिन हम भी फॉर्म पोस्ट करने में सक्षम होना चाहते हैं (इसलिए name सर्वर मॉडल से मेल खाने की आवश्यकता है)।

हमारे वर्तमान समाधान हर बार आंशिक दृश्य लोड किया जाता है के लिए एक अद्वितीय संख्या उत्पन्न करने के लिए है, सेट HtmlFieldPrefixitems[n] (जहां n जनरेट की गई संख्या है) करने के लिए और items की एक सरणी (जहां हम केवल जरूरत प्राप्त करने के लिए हमारे कार्रवाई के लिए एक प्राप्त करने के लिए)। यह हमें वैश्विक स्तर पर अद्वितीय id और name देता है जिसे मॉडल बाइंडर द्वारा पार्स किया जा सकता है।

हालांकि यह बदसूरत लगता है। कोई सुझाव?

उत्तर

2

मुझे आपके जैसा ही मुद्दा था।

@{ ViewData.TemplateInfo.HtmlFieldPrefix = "Prefix"; } 
@using(Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    @Html.TextBoxFor(m => m.MerchantAccount.MerchantName, new { maxlength = 29, size = 35 })<br /> 
    @Html.ValidationMessageFor(m => m.MerchantAccount.MerchantName) 
} 

सबसे पहले, मेरा बुरा विचार: सभी नामों के लिए अवांछित उपसर्ग को हटाने के लिए पृष्ठ लोड पर jQuery का उपयोग करें।

$('[id*="Prefix_']).each(function(i, e) {...

क्या हम वास्तव में समाप्त हो गया ऐसा करने के लिए यहाँ सुझाव दिया गया था: https://stackoverflow.com/a/1318342/4946681

असल में, नियंत्रक आप राज्य (विधि हस्ताक्षर में एक बाँध उपसर्ग निर्दिष्ट करके) क्या उपसर्ग पट्टी पर है और इसके लिए किया है आप स्वचालित रूप से

अब हम अपने आईडी उपसर्ग केक प्राप्त कर सकते हैं, और उन्हें भी खा सकते हैं!

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