ASP.Net MVC 3 Unobtrusive validation-funktioniert nicht auf Partial View
Ich habe setup eine Teilansicht, die Häuser seiner eigenen form-tag, etwa so:
<tr>
@using (Html.BeginForm("Create"))
{
<td>
@Html.TextBoxFor(model => model.Date)
@Html.ValidationMessageFor(model => model.Date)
</td>
<td>
@Html.TextBoxFor(model => model.Amount)
@Html.ValidationMessageFor(model => model.Amount)
</td>
<td>
@Html.TextBoxFor(model => model.Tags)
@Html.ValidationMessageFor(model => model.Tags)
</td>
<td>
@Html.EnumDropDownListFor(model => model.Type)
</td>
<td>
<input type="submit" value="Add" />
@Html.ValidationSummary(true)
</td>
}
</tr>
Ich render es auf einer Seite mit @Html.Aktion("Erstellen") (Es ist Teil einer Tabelle, daher der <tr> tags.
Für einige ungerade Grund meiner clientseitige Validierung funktioniert nicht, und ich zuerst die Fehler sehen nach dem posten.
Ist es etwas besonderes teilweise Ansichten und clientseitiger Validierung ?
Beigefügt habe ich die folgenden Skripte:
<script src="/Scripts/jquery.1.5.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>
BEARBEITEN
Habe ich gerade versucht, warf das Skript auf der Seite:
jQuery('form').submit(function ()
{
alert(jQuery(this).valid());
});
Alarmiert es "wahr" ist, also der clientseitigen Validierung Skript ist definitiv da, und für einige Grund, es ist nicht die überprüfung der Felder in Frage :-/
EDIT 2
Ich hochgeladen habe den gesamten source-code für die Seite (HTML + JS) auf pastebin: http://pastebin.com/GvqLW495
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten:
Merkte ich, suchen in Ihrem code, dass man mit Hilfe von jQuery 1.5.1 mit der (ich nehme an) .NET zur Verfügung gestellt jQuery.überprüfen. Leider, diese beiden arbeiten nicht zusammen noch. Sie haben, um den Kopf hier schnappen Sie sich einen version, das funktioniert mit der aktuellen jQuery (Sie müssen verwenden 1.4.4). Wenn das nicht funktioniert, würde ich noch empfehlen, Check-out der Lösung unten.
Ich hatte ein ähnliches problem (obwohl ich bin nicht sicher, es ist genau das gleiche problem). Ich schrieb über die Lösung in diesem blog-post. Leider kann ich nicht sicher sein, Sie haben exakt das gleiche problem, aber es ist einen Versuch Wert.
Im Grunde ist es eingekocht, um die Tatsache, dass ich anrufen musste diese Zeile nach dem laden meine PartialViews (obwohl ich das laden über AJAX, das ist, was ich denke, das problem verursacht):
Siehe den blog-post für weitere Details. Hoffentlich hilft es Euch aus.
Schließlich fand ich heraus, was es verursacht zu scheitern, es ist die Tatsache, dass meine partielle view ist innerhalb einer html-Tabelle...
Dies nicht funktioniert, jedoch wenn ich den @Html.Maßnahmen außerhalb der table-Tags funktioniert es Prima.
Ich denke, dass die Wurzel des Problems wat die Nutzung im Falle rechtswidriger html-syntax:
<tr>
- tag kann nur die<td>
tags.In den meisten Fällen die Struktur wie Ihr ' s nicht dargestellt werden korrekt im Browser, especiallywhen asynchron geladen.