1

Ich verwende FluentValidation und ASP.NET MVC 3.Mehrere Validierungen auf einem Grundstück mit FluentValidation

Ich habe nur ein paar Fragen der Validierung in Bezug auf.

Ich habe meine Validierung meiner Meinung nach Modell Setup wie folgt aus:

public NewsViewModelValidator() 
{ 
    // Title is required 
    RuleFor(x => x.Title) 
     .NotEmpty() 
     .WithMessage("Title is required"); 

    // Title must be less than or equal to 100 characters 
    RuleFor(x => x.Title) 
     .Length(1, 100) 
     .WithMessage("Title must be less than or equal to 100 characters"); 
} 

Ist dies, wie es getan werden muss, oder muss ich es in 1 Erklärung enthalten?

Ich brauche 2 Validierungen für die Title-Eigenschaft, Name, dass es ein Pflichtfeld sein muss und dass es nicht länger als 100 Zeichen sein darf. Unten ist die Quelle, nachdem die Validierung ausgelöst wurde:

<td valign="top"><b>Title: *</b></td> 
<td> 
    <input class="input-validation-error" data-val="true" data-val-length="Title must be less than or equal to 100 characters" data-val-length-max="100" data-val-length-min="1" data-val-required="Title is required" id="Title" max="100" name="Title" size="100" type="text" value="" /><br> 
    <span class="field-validation-error" data-valmsg-for="Title" data-valmsg-replace="true">Title is required</span> 
</td> 

Sie verwendet 2 verschiedene Klassen, eine für jeden Validierungstyp. Warum ist das? Jetzt ist meine Form nicht konsistent. Ich habe ein anderes Eingabefeld, das erforderlich ist, und die Klasse, die dafür verwendet wird, ist Eingabe-Validierungsfehler, darüber war Feldvalidierungsfehler.

Wie kann ich die clientseitige Validierung aktivieren? Mir wurde gesagt, dass, wenn ich den folgenden Code in meinem web.config gesetzt haben, dann Client-Seite automatisch eingeschaltet wird:

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

clientseitige Validierung nicht ausgelöst wird. Muss ich die jQuery-Bibliothek einbinden oder ist das für mich erledigt?

Antwort

1

Sie müssen diese zu Ihrem _Layout.cshtml hinzuzufügen:

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