2011-01-16 27 views
8

काम नहीं कर रहा है मैं रेज़र के साथ एमवीसी 3 का उपयोग कर रहा हूं।
मैं अपने _Layout.cshtml में निम्नलिखित शामिल किया है:एमवीसी 3 क्लाइंट साइड सत्यापन

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script> 

मेरे प्रपत्र लगता है:

@{ 
     ViewBag.Title = "Register"; 
     Html.EnableClientValidation(); 
    } 
    @using (Html.BeginForm("Register")) 
    { 
     <fieldset> 
     <p> 
      @Html.LabelFor(o => o.Email) 
      @Html.TextBoxFor(o => o.Email) 
      @Html.ValidationMessageFor(o => o.Email) 
     </p> 
    ... 
</fieldset> 
} 

मेरे ViewModel DataAnnotations है (और IValidatableObject लागू करता है), और यह नियंत्रक के दौरान मान्य करता है कार्रवाई। हालांकि मैं फॉर्म पोस्ट किए बिना क्लाइंटसाइड पर जेएस सत्यापन का उपयोग करने में सक्षम नहीं प्रतीत होता।

मुझे क्या याद आ रही है?

उत्तर

27

ASP.NET MVC 3 में jQuery सत्यापन प्लगइन क्लाइंट साइड सत्यापन के प्रदर्शन के लिए डिफ़ॉल्ट है। तो आप अपनी परियोजना से सभी Microsoft*.js स्क्रिप्ट हटा सकते हैं। आप केवल निम्नलिखित की जरूरत है:

<script src="@Url.Content("~/Scripts/jquery-1.4.4.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 

और Html.EnableClientValidation(); कॉल को हटा दें। वेब कॉन्फ़िगरेशन में क्लाइंट सत्यापन सक्षम है:

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

मैंने यह किया। अभी भी कुछ भी नहीं हुआ। क्या प्रत्येक कीस्ट्रोक पर सत्यापन होना चाहिए? या जब टेक्स्टबॉक्स फोकस खो देता है? जब मैं फॉर्म लोड करता हूं तो आवश्यक विशेषताओं वाले खाली फ़ील्ड अमान्य होनी चाहिए? – TDaver

+1

@TDaver, डिफ़ॉल्ट क्लाइंट सत्यापन द्वारा तब होता है जब इनपुट फोकस खो देता है या जब आप फॉर्म जमा करने का प्रयास करते हैं। –

1

Html.EnableClientValidation() को हटाएं; और अपने वेब config गोटो, और सुनिश्चित करें कि आप एक appSetting कि नीचे की तरह लग रहा है बनाने:

<add key="ClientValidationEnabled" value="true"/> 
1

अपने दृश्य में निम्न पंक्तियां जोड़ने का प्रयास करें।

HtmlHelper.ClientValidationEnabled = true; 
HtmlHelper.UnobtrusiveJavaScriptEnabled = true; 

jQuery-1.4.4.js, jquery.validate.js सहित के साथ साथ,

jquery.validate.unobtrusive.js मैं इसे अपने अनुप्रयोग के लिए काम करने के लिए मिलता है, लेकिन यह में किक करने के लिए नहीं लगता है जब तक मैं एक बुरा मूल्य डाल दिया। उदाहरण के लिए

[Required(ErrorMessageResourceType = typeof(Resources.WValidation), ErrorMessageResourceName = "TestCountRequired")] 
     [Range(1, Int32.MaxValue, ErrorMessageResourceType = typeof(Resources.WValidation), ErrorMessageResourceName = "TestCountRange")] 
     public int? TestCountThreshold { get; set; } 

तो मैं सामने के अंत पर और है कि ग्राहक साइड सत्यापन दोषरहित काम करता है के बाद एक 0 में डाल दिया। मैं शुरुआती रिक्त टेक्स्ट बॉक्स के लिए काम करने के लिए सत्यापन करना चाहता हूं ... सत्यापन के लिए गलत लगता है जब तक कोई खराब मूल्य न हो।

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