2012-08-10 21 views
5

मैं निम्नलिखित दृश्य है:विनीत सत्यापन अनदेखी डेटा-वैल जिम्मेदार बताते हैं, लेकिन वर्ग के साथ काम कर = "आवश्यक"

@using (Html.BeginForm()) 
{ 
    <div class="left-column"> 
     @Html.LabelFor(m => m.Expression) 
     @Html.TextAreaFor(m => m.Expression, new { @spellcheck = "false" }) 
     @Html.EditorFor(m => m.Sku) 
    </div> 
} 

निम्न JavaScript जो एक टाइमर पर हर दूसरे चलाता है के साथ:

$("form").validate(); 

if ($("form").valid()) { 
    //... 
} 

पाठ क्षेत्र तत्व के लिए निम्नलिखित एचटीएमएल (केवल तत्व की आवश्यकता होगी, सत्यापन) उत्पन्न करता है:

<textarea 
    data-val="true" 
    data-val-required="The Expression field is required." 
    cols="20" rows="2" 
    id="Expression" name="Expression" 
    spellcheck="false"> 
</textarea> 

समस्या यह है कि सत्यापन कुछ भी नहीं करता है, जब तक कि मैं ब्राउज़र उपकरण का उपयोग करके कक्षा = "आवश्यक" मैन्युअल रूप से जोड़ता हूं। अगर मैं यह सत्यापन कार्य करता हूं और त्रुटि संदेश "अभिव्यक्ति फ़ील्ड आवश्यक है" प्रदर्शित होता है। सटीक "$ (" फ़ॉर्म ") होना चाहिए। वैध()" टेक्स्टरेरा खाली होने पर भी हमेशा सत्य लौटाता है। चूंकि मैं एनोटेशन का उपयोग कर रहा हूं जो स्वचालित रूप से डेटा-वैल विशेषताओं को उत्पन्न करता है, मैं उन पर भरोसा करना चाहता हूं। मैं क्या गलत कर रहा हूं?

FYI करें मेरी स्क्रिप्ट refs इस तरह दिखेगा:

<script src="/Scripts/modernizr-2.0.6-development-only.js" ... 
<script src="/Scripts/jquery-1.6.2.js" ... 
<script src="/Scripts/Parser.js" ... 
<script src="/Scripts/jquery.unobtrusive-ajax.js" ... 
<script src="/Scripts/jquery.validate.js" ... 
<script src="/Scripts/jquery.validate.unobtrusive.js" ... 
+0

Chrome और IE9 में होता है में sitewide सेट कर सकते हैं मेरी doctype है

+0

क्या आपका फॉर्म आईडी '# paserForm' दिया गया है? इसके अलावा, एएसपी.नेट एमवीसी आपके लिए 'वैध' कॉल करनी चाहिए, आपको इसे स्वयं नहीं बुलाया जाना चाहिए। –

+0

हां यह है, लेकिन असल में, वास्तविक जेएस कोड केवल $ ("फॉर्म") पर चलता है, स्पष्ट रूप से इसे पार्सरफॉर्म कहता है यह देखने के लिए कि यह कुछ भी बदल गया है या नहीं। Validate के लिए चला जाता है() –

उत्तर

1

आप विनीत जावास्क्रिप्ट और ग्राहक सत्यापन सक्षम है नेट के लिए?

आपके विचार में निम्नलिखित सेट करके देखें:!

@{ Html.EnableUnobtrusiveJavaScript(true); 
    Html.EnableClientValidation(true); 
    Html.ValidationSummary(true); 
} 

आप भी इसे अपने web.config

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
+2

मेरे पास है! खैर, मुझे यह याद नहीं है, लेकिन यह वहां है, इसलिए मुझे लगता है कि NuGet ने ऐसा किया था। फिर भी, यह लगभग एक महीने में पहली बार एक समस्या है जो अभी भी अनसुलझा है, इसलिए इसके लिए धन्यवाद! –