jQuery-Client-Seite Validierung funktioniert nicht in MVC3 Teilansicht
Konnte ich nicht scheinen, erhalten die clientseitige Validierung funktioniert mit den folgenden Teilansicht. Diese Ansicht ist innerhalb divTSettings div-Element in der übergeordneten Ansicht. Versuchte viele Dinge von stackoverflow und anderen Seiten, nichts scheint zu funktionieren. Irgendwelche Ideen?
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
@using (Ajax.BeginForm("CreateT", "TAdmin", null,
new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "divTSettings"},
new { id = "CreateTForm" }))
{
<div>
<label>Name:</label>
<input type="text" name="tName" id="tName"/>
@Html.ValidationMessage("tName")
<input type="submit" value="Submit"/>
</div>
}
<script type="text/javascript">
$(function() {
$('#CreateTForm').validate({
rules: {
tName: {
required: true
}
},
messages: {
tName: {
required: 'Name required'
}
}
});
$("#CreateTForm").removeData("validator");
$("#CreateTForm").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("#CreateTForm");
});
</script>
InformationsquelleAutor der Frage blue | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, die erste Sache Sie tun sollten ist, um loszuwerden, alle diese
<script>
tags von Ihrem Teilansicht. Teilweise Ansichten enthält keine Skripte. Teilweise Ansichten enthalten sollte nur markup. Ich habe wiederholt dieses viele Male, und sehe immer noch Leute, die Ihr scripts in-es. Skripte sollten registriert werden, entweder im Layout oder in der Haupt-Ansicht, in der Sie erbracht hat, die teilweise, wahrscheinlich durch überschreiben einige Skripte Abschnitt registriert Ihr Layout so, dass alle Skripte bekommen, eingefügt in das Ende des HTML-Dokuments, vor der schließenden</body>
tag. Das ist, wo Sie hingehören.OK, nun zum eigentlichen problem: unobtrusive validation-funktioniert nicht out-of-the-box mit dynamisch hinzugefügten Elemente der DOM - wie zum Beispiel sendet eine AJAX-Anfrage an den server liefert eine Teilansicht und teilweise Blick dann injiziert in die DOM.
In Ordnung, damit es funktioniert, müssen Sie sich diese neu hinzugefügten Elemente mit der unobtrusive validation-framework. Um dies zu tun müssen Sie rufen Sie die
$.validator.unobtrusive.parse
auf die neu hinzugefügte Elemente:Sollte man diesen code in der AJAX-success-handler, ist die Injektion die teilweise in Ihren DOM. Sobald Sie injiziert haben die neuen Elemente einfach diese Funktion aufrufen.
Und wenn Sie nicht schreiben Ihre AJAX-requests manuell mit jQuery ($.ajax, $.post, ...), sondern sich auf einige Ajax.BeginForm und Ajax.ActionLink Helfer der job für Sie tun, werden Sie brauchen, um sich in die OnSuccess-callback in die AjaxOptions und fügen Sie diesen code in es.
InformationsquelleAutor der Antwort Darin Dimitrov
Wenn Sie wollen fix auf globaler Ebene, dann sollte diese Hilfe.
Ich verwendete in _layout.cstml.
InformationsquelleAutor der Antwort kuns200