2013-05-29 8 views
17

एएसपीनेट एमवीसी की मूल बातें सीखने की कोशिश कर रहा है और यह समझ में नहीं आता कि मेरा क्लाइंट साइड सत्यापन क्यों काम नहीं कर रहा है।एमवीसी 4 क्लाइंट साइड सत्यापन

मैं दोनों मेरे web.config फ़ाइलों में इस राशि (1 वैश्विक है 1 बार देखा गया फ़ोल्डर में है)

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

मैं अपने _layout.cshtmlfile में इस राशि

@Scripts.Render("~/bundles/jquery") 
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") 
@Scripts.Render("~/Scripts/jquery.validate.min.js") 

यह मेरा

public class RegisterVM 
    { 
     [Required(ErrorMessage="Username Required")] 
     public string username { get; set; } 

     [RegularExpression(@"((?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,20})")] 
     [Required(ErrorMessage="Password Required")] 
     public string password { get; set; } 

     [Compare("password", ErrorMessage="Passwords do not match")] 
     public string passwordConfirm { get; set; } 
    } 

और ये मेरे एचटीएमएल

०१२३५१६४१०६१ है: दृश्य मॉडल है जो im परीक्षण पंजीकरण के लिए
@using(@Html.BeginForm()){ 

    @Html.LabelFor(model => model.username) 
    @Html.EditorFor(model => model.username) 
    @Html.ValidationMessageFor(model => model.username)<br /> 

    @Html.LabelFor(model => model.password) 
    @Html.PasswordFor(model => model.password) 
    @Html.ValidationMessageFor(model => model.password)<br /> 

    @Html.LabelFor(model => model.passwordConfirm) 
    @Html.EditorFor(model => model.passwordConfirm) 
    @Html.ValidationMessageFor(model => model.passwordConfirm)<br /> 

    <input type="submit" value="Register" /> 


} 

यहां पोस्ट नहीं करना चाहते थे, यहां कुछ विषयों को पढ़ा है, लेकिन मेरे मुद्दों को ठीक करने के लिए प्रतीत नहीं होता है, जब मैं इसे पोस्ट/अनुरोध प्राप्त करने पर क्लिक करता हूं।

+3

मैं बिल्कुल याद नहीं कर सकते, लेकिन सही करने _layout.cshtmlfile' 'में लोड फ़ाइलों का आदेश है? क्या आपने पहले कथन से जेएस नहीं छोड़ा था, और क्या आपने ब्राउजर में लोड की गई फाइलों की जांच की? –

+0

देखें स्रोत दिखाता है कि सभी फाइलें लोड की गई हैं। – Larry

+3

क्या आपने validate.unobtrusive.min.js – Adil

उत्तर

22

इस तरह Feels काम करना चाहिए, मैं तुम्हें validate.unobtrusive.min.js से पहले validate.min.js लोड करने के लिए की जरूरत है

+0

पहले से ही कवर किया गया है, वह उत्तर था लेकिन उपरोक्त टिप्पणियों को सही के रूप में चिह्नित नहीं किया जा सकता है!धन्यवाद – Larry

+0

हाँ मैंने ऊपर टिप्पणी की लेकिन फिर एहसास हुआ कि उत्तर के रूप में यह दूसरों के लिए उपयोगी हो सकता है – Adil

+0

सही के रूप में चिह्नित किया गया, धन्यवाद :) – Larry

2

क्योंकि आप पहले jquery.validate.min.js लोड नहीं करता है यही कारण है कि अविभाज्य एक।

3

अपने पेज में आप पृष्ठ के निचले भाग में इन दो लाइन है

कृपया देखें ध्यान से

@section Scripts { 
@Scripts.Render("~/bundles/jqueryval") 
} 
+0

मैंने इस स्क्रिप्ट को विशेष पृष्ठ में पहले ही जोड़ दिया है। –

8

मैं एक ऐसी ही समस्या है और केवल बात यह है कि तय था इसे मैन्युअल रूप से किया गया था कॉल

$.validator.unobtrusive.parse($('form')); 

सबमिट बटन दबाए जाने से पहले।

अंत में मैंने इसे दस्तावेज़ तैयार कॉलबैक में रखा।

$(function() { 
    $.validator.unobtrusive.parse($('form')); 
}); 
+0

सफलता के बिना बहुत सारे समाधानों का प्रयास करने के बाद, यह बहुत अच्छा काम करता है। धन्यवाद – IFink

+0

मैंने BundleConfig.cs में अपनी स्क्रिप्ट को बंडल करने और '$ ('# nameOfForm') पर अपनी कॉल को बंडल करने के बाद इस मुद्दे को देखा। मान्य(); 'काम नहीं कर रहा था। एक बार जब मैंने इस लाइन को जोड़ा तो उसने बहुत काम करना शुरू कर दिया –

0
$('#divParent').load("url", 
        function() { 
        $.validator.unobtrusive.parse($('form'));} 
       ); 

नोट: यह आवश्यक है अगर आप 'फॉर्म' लोड कर रहे हैं या 'PartialView' गतिशील 'div' अंदर ajax का उपयोग कर कॉल

0

तुम बस हर पृष्ठ आप सत्यापन की जरूरत है पर इन फ़ाइलों को संदर्भ की जरूरत है मेरा दोस्त!

<script src="~/Scripts/jquery.validate.js"></script>  
संबंधित मुद्दे