2012-07-26 22 views
5

मेरे एएसपी.नेट एमवीसी 4 अनुप्रयोग में मैं फ्लुएंट सत्यापन के साथ अविभाज्य ग्राहक सत्यापन का उपयोग करने की कोशिश कर रहा हूं।एएसपी.नेट एमवीसी अविभाज्य ग्राहक सत्यापन

<script src="/Scripts/jquery.validate.min.js" type="text/javascript"> 
</script> 
<script src="/Scripts/jquery.validate.unobtrusive.min.js" type="text/javascript"> 
</script> 

मेरे पास इन दो .js फ़ाइलें हैं जो VS2010 प्रदान करती हैं जब नया एएसपी.नेट एमवीसी 4 एप्लिकेशन बनाया जाता है। मैंने अपनी web.config फ़ाइल पर क्लाइंट साइड सत्यापन भी सक्षम किया है।

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

जहाँ तक मुझे पता है जब ग्राहक सत्यापन और विनीत जावास्क्रिप्ट सक्रिय है, एक क्लाइंट-सत्यापन नियम के साथ इनपुट फ़ील्ड डेटा-वैल = "true" विनीत ग्राहक सत्यापन को गति प्रदान करने का श्रेय होते हैं। और मेरे पास इन इनपुट फ़ील्ड पर इन फ़ील्ड हैं।

उदाहरण के लिए

,

<input class="input-validation-error" data-val="true" data-val- 
required="error text here" id="purchasePrice" 
name="PurchasePrice" type="text" value=""> 

<span class="field-validation-error error" data-valmsg-for="PurchasePrice" 
data-valmsg-replace="true">'Purchase Price' must not be empty.</span> 

हालांकि, जब मैं अपने सबमिट करने पर नियंत्रक को पोस्ट किया जाता है और अपने मॉडल ग्राहक के पक्ष के बजाय मेरी नियंत्रक कोड पर चेक किया गया है।

संपादित करें:

यह मेरा रूप खुलने वाला टैग है।

@using (Html.BeginForm("Create", "Product", FormMethod.Post, 
    new { enctype = "multipart/form-data", @class = "mainForm", 
     @id = "productCreateForm" })) 

कोई विचार? धन्यवाद।

+2

बेवकूफ सवाल, लेकिन क्या आपने यह सुनिश्चित किया है कि मुख्य JQuery जेएस फ़ाइल और आपके द्वारा दिखाए गए दो सही तरीके से हल हो गए हैं? –

+0

मुख्य jQuery फ़ाइल निश्चित रूप से हल हो गई है, मेरे पास jquery फ़ंक्शंस का एक लूप सही तरीके से काम कर रहा है। मुझे नहीं पता कि उनमें से दो ने ईमानदार होना है या नहीं। वे फ़ाइलें मौजूद हैं और वे क्रोम डेवलपर टूल के स्क्रिप्ट भाग में उपलब्ध प्रतीत होती हैं। –

+0

एक और बेवकूफ सवाल, क्या आपने मॉडल से इनपुट को प्रमाणित किया है? –

उत्तर

3

क्या आपने एमवीसी के लिए कॉन्फ़िगरेशन जोड़ा था?

protected void Application_Start() { 
    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    // this line is required for fluent validation 
    FluentValidationModelValidatorProvider.Configure(); 
} 

तुम भी प्रत्येक दृश्य मॉडल/सत्यापनकर्ता विन्यस्त करने की जरूरत:

[Validator(typeof(PersonValidator))] 
public class Person { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public int Age { get; set; } 
} 

public class PersonValidator : AbstractValidator<Person> { 
    public PersonValidator() { 
     RuleFor(x => x.Id).NotNull(); 
     RuleFor(x => x.Name).Length(0, 10); 
     RuleFor(x => x.Email).EmailAddress(); 
     RuleFor(x => x.Age).InclusiveBetween(18, 60); 
    } 
} 

यदि यह मदद नहीं करता है, तो आप एक सत्यापनकर्ता कि सही ढंग से काम नहीं कर रहा है का एक उदाहरण पोस्ट सकता है? सभी सत्यापन क्लाइंट पक्ष नहीं किया जा सकता है। उदाहरण के लिए, निम्नलिखित सत्यापनकर्ता केवल सर्वर पक्ष काम करेगा:

// when validator rules are always server side 
public class ServerSideValidator : AbstractValidator<Person> { 
    public ServerSideValidator() { 
     When(x => x.Name == "Foo",() => { 
      RuleFor(x => x.Email).EmailAddress(); 
     }); 
    } 
} 
+0

thx लेकिन मेरे पास सब कुछ है। यह मेरा सत्यापन कोड है: नियमफोर (उत्पाद => उत्पाद। निर्माता) .NotNull(); –

+0

निर्माता क्या है? क्या वह एक स्ट्रिंग या कक्षा है? – Dismissile

+0

बस एक स्ट्रिंग। –