7
नहीं

करता है चलो कहते हैं कि मैं इस मॉडल करते हैं:पहले एचटीएमएल सहायक, क्लाइंट-साइड सत्यापन गुण उत्पन्न करता है, जबकि दूसरा एक

public class Person 
{ 
    public bool IsApproved { get; set; } 
} 

और whis इस कोड, मैं check प्रकार के साथ input रेंडर करने के लिए कोशिश कर रहा हूँ:

@Html.CheckBoxFor(x => x.IsApproved) 
@Html.CheckBox("IsApproved") 

लेकिन, परिणाम भिन्न हैं:

// CheckBoxFor result 
<input data-val="true" data-val-required="The IsApproved field is required." id="IsApproved" name="IsApproved" type="checkbox" value="true"> 
<input name="IsApproved" type="hidden" value="false"> 

// CheckBox result 
<input id="IsApproved" name="IsApproved" type="checkbox" value="true"> 
<input name="IsApproved" type="hidden" value="false"> 

कैसे और क्यों, पहला क्लाइंट-साइड सत्यापन के लिए विशेषताओं को उत्पन्न करता है, जबकि दूसरा नहीं था?

अद्यतन:

@Html.CheckBoxFor और @Html.CheckBox के आदेश की अदला-बदली के बाद, मार्कअप तत्वों का क्रम नहीं बदला।

उत्तर

9

CheckBox() सहायक data-val विशेषताएँ प्रस्तुत नहीं करता है क्योंकि फ़ॉर्म पहले से ही उसी संपत्ति के लिए CheckBoxFor() प्रस्तुत कर चुका है। यदि आप ऑर्डर को स्वैप करते हैं, तो data-val विशेषता CheckBox() (और CheckBoxFor() के लिए नहीं) के लिए प्रस्तुत की जाएगी।

मेरी समझ यह है कि फ़ॉर्म को पार्स करते समय jquery.validation.unobtrusive के साथ संभावित (डुप्लिकेशन) समस्या होगी।

नियंत्रण के लिए एचटीएमएल हेल्पर्स आंतरिक रूप से GetUnobtrusiveValidationAttributes()HtmlHelper की विधि को कॉल करते हैं। From the source code (मेरे जोर)

केवल गुण प्रदान करता है, तो विनीत क्लाइंट साइड सत्यापन सक्षम किया गया है, और उसके बाद ही अगर हम इस फार्म में इस नाम का एक क्षेत्र के लिए मान्यता प्रदान की गई कभी नहीं किया है। इसके अलावा, वहाँ है कि अगर कोई रूप संदर्भ है, तो हम गुण प्रदान नहीं कर सकते हैं एक अच्छा विवरण के लिए

public IDictionary<string, object> GetUnobtrusiveValidationAttributes(string name, ModelMetadata metadata) 
{ 
+0

धन्यवाद (हम कोई उन्हें संलग्न करना चाहते हैं)। यह एक जवाब है। –

+0

हाय @ स्टीफन, फिर से परेशान करने के लिए खेद है। कई दिन पहले मैंने एक समस्या के बारे में एक प्रश्न पोस्ट किया है जिसे मैंने एएसपीएनटी एमवीसी से मुलाकात की। क्या आप इसके बारे में कोई विचार है? क्या आप इसे देख सकते हैं। यहां [प्रश्न] है (http://stackoverflow.com/questions/31492648/best-practice-for-using-interface-type-as-model-in-view-and-use-real-type-attrib)। –

+0

@ फ़ारद जबीयेव, अब समय नहीं है, लेकिन कल कल एक नज़र डालेंगे :) –

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