5

Ich habe die folgende Ansicht:Unauffällig Validierung ignoriert Daten-val-Attribute, aber mit Klasse arbeiten = „erforderlich“

@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> 
} 

Mit dem folgenden JavaScript, die in jeder Sekunde auf einem Timer läuft:

$("form").validate(); 

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

generiert die folgende html für den Textbereich Element (das einzige Element, um die Validierung):

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

die Das Problem ist, dass die Validierung nichts bewirkt, es sei denn, ich verwende class = "required" manuell mit Browser-Tools. Wenn ich dies tue funktioniert die Validierung und die Fehlermeldung "Das Feld Ausdruck ist erforderlich" wird angezeigt. Um genau zu sein "$ (" form "). Valid()" gibt immer true zurück, auch wenn textarea leer ist. Da ich Anotationen verwende, die automatisch die Data-Val-Attribute generieren, würde ich mich auf diese verlassen. Was mache ich falsch?

FYI aussehen mein Skript Refs wie folgt aus:

<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

in Tritt beide Chrome und IE9, mein Doctype ist

+0

Ist Ihr Formular mit der ID '# paserForm' versehen? Außerdem sollte ASP.NET MVC "validate" für Sie aufrufen, Sie sollten es nicht selbst aufrufen. –

+0

Ja ist es, aber in der Tat läuft der eigentliche JS-Code einfach auf $ ("form"), explizit aufrufend ParserForm war nur für einen Test, um zu sehen, ob es etwas änderte. Gleiches gilt für .validate() –

Antwort

1

Haben Sie aktiviert Unauffällig Javascript und Client-Validierung für .NET?

versuchen Sie die folgenden Ihrer Ansicht nach Einstellung:

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

Sie können auch in Ihrem web.config es Satz für ganze Site

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

Ich habe! Nun, ich erinnere mich nicht, es getan zu haben, aber es ist da, also nehme ich an, dass NuGet es getan hat. Dennoch ist dies der erste Vorschlag seit fast einem Monat, ein Problem, das immer noch ungelöst ist, also danke dafür! –