Ich habe eine Teilansicht in einer MVC 3-Anwendung erstellt. Diese Ansicht hat ein stark typisiertes Modell wie folgt:
%Vor%In meiner Aktionsmethode rufe ich die PartialView-Methode wie folgt auf
%Vor%Aber auf der Seite kann ich kein Markup für die Validierungslogik sehen und nichts passiert, wenn irgendwelche Fehler auf der Seite sind. Wenn ich diese Teilansicht als Editorvorlage verwende, funktioniert sie. Jede Hilfe wird geschätzt.
Bearbeiten: Um genauer zu sein, habe ich ein HTML-Formular und ich möchte Markup hinzufügen über Ajax Update (wenn der Benutzer auf eine Schaltfläche klickt, ich möchte neues Markup zu diesem Formular hinzufügen). Wenn ich diese Steuerelemente statisch einbeziehe, meine ich, wenn ich sie rende, wenn die Seite geladen wird, funktioniert Validierung, aber wenn ich dem Formular durch einen Ajax-Aufruf Steuerelemente hinzufüge, wird kein Validierungs-Markup für diese Steuerelemente eingefügt. Meine Teilansicht sieht so aus:
%Vor%Mein Formular sieht so aus:
%Vor%Der obige Code funktioniert gut, Validierung funktioniert. Auf der Serverseite rufe ich eine Aktionsmethode auf, die wie folgt aussieht:
%Vor%Ich habe herausgefunden, dass die MVC-Engine diese Validierungsmarkierung nur dann einfügt, wenn sie feststellt, dass sich die Steuerelemente in einem Formularsteuerelement befinden. Wenn ich versuche, meine Formularsteuerung über einen Ajax-Aufruf zu aktualisieren, kann MVC nicht wissen, dass sie in ein Formularelement eingefügt werden, und deshalb gibt es keine Validierungslogik für sie, nehme ich an.
Setzen Sie dies oben in Ihrer Teilansicht und Sie erhalten die Validierungsmeldung in der HTML-Ausgabe gerendert:
%Vor%Wenn Sie ajax verwenden, um die Formularfelder hinzuzufügen, können Sie die neuen Felder dazu veranlassen, zur Validierung hinzugefügt zu werden, sobald sie zum DOM / Page hinzugefügt wurden, indem Sie etwa wie folgt vorgehen:
%Vor%BEARBEITEN / AKTUALISIEREN (23. FED 2013): Ich habe gerade den FormContext einer Teilansicht zum ersten Mal in Visual Studio 2012 gehackt und es scheint, dass ich mit den neuesten Versionen von jQuery und Validation usw. die 3 Zeilen Javascript (oben) für die Validierung nicht hinzufügen muss dynamisch über Ajax zu arbeiten, was großartig ist!
Fügen Sie in Ihrer Teilansicht Folgendes hinzu (C # / Razor):
%Vor%Nicht sicher, ob das immer noch ein Problem für Sie ist, aber die Lösung wäre:
%Vor%nachdem Sie die Formularmarkierung / -steuerelemente über AJAX geladen haben. Dies analysiert Ihre neuen Formularelemente und erstellt die Validierung der Clientseite, die Sie in Ihrer Ansicht angegeben haben.
Haben Sie die unauffällige Validierung in web.config oder in der Ansicht selbst aktiviert?
in web.config:
%Vor%oder innerhalb des Codes:
%Vor%Mit der Client-Validierung können Elemente, die nach dem Laden der Seite geladen wurden, erneut validiert werden. Wenn MVC jetzt die jQuery-Validierung verwendet, wenn die Client-Validierung aktiviert ist,
jquery validate - Validieren eines Felds beim Pagenload
Dies könnte Ihnen helfen.
Tags und Links asp.net-mvc-3 validation data-annotations unobtrusive-javascript