ASP.NET MVC 3: Generieren Sie eine unauffällige Validierung, wenn BeginForm im Layout ist

7

Ich habe gerade festgestellt, dass die unauffällige Validierung nicht generiert wird, wenn ich ein Formular-Tag auf meiner Layout-Seite plaziere, die den RenderBody-Bereich umgibt. Etwas wie das:

%Vor%

Wie Sie vielleicht schon vermutet haben, möchte ich Schaltflächen für meinen Inhalt generieren. Ist das das korrekte unauffällige Verhalten?

Übrigens: Wenn ich das Formular in eine bestimmte Seite lege, funktioniert alles wie ein Zauber: Die Daten-val * -Attribute sind gut erzeugt.

Ich werde Ihre wertvolle Hilfe zu schätzen wissen.

Beste Grüße

Rodrigo

    
Rodrigo Caballero 14.02.2011, 21:06
quelle

5 Antworten

1
___ answer4997920 ___

Sie könnten einen grotesken Hack in Ihrer Ansicht anwenden:

%Vor%     
___ qstntxt ___

Ich habe gerade festgestellt, dass die unauffällige Validierung nicht generiert wird, wenn ich ein Formular-Tag auf meiner Layout-Seite plaziere, die den RenderBody-Bereich umgibt. Etwas wie das:

%Vor%

Wie Sie vielleicht schon vermutet haben, möchte ich Schaltflächen für meinen Inhalt generieren. Ist das das korrekte unauffällige Verhalten?

Übrigens: Wenn ich das Formular in eine bestimmte Seite lege, funktioniert alles wie ein Zauber: Die Daten-val * -Attribute sind gut erzeugt.

Ich werde Ihre wertvolle Hilfe zu schätzen wissen.

Beste Grüße

Rodrigo

    
___ qstnhdr ___ ASP.NET MVC 3: Generieren Sie eine unauffällige Validierung, wenn BeginForm im Layout ist ___ antwort5004748 ___

Vielen Dank für Ihre Hilfe, ich habe es versucht, aber ich fand eine Lösung nicht so "grotesk" (wie Sie gesagt haben), wie Sie vorgeschlagen: D

Ich habe einfach eine BeginForm-Methode in meine Seite eingefügt und auch eine BeginForm-Methode für das Layout:

%Vor%

Also, am Ende habe ich zwei BeginForm-Methoden: Die ASP.NET MVC-Engine verwendet die auf der Layout-Seite, so dass die Daten-val * -Attribute richtig gerendert werden und das Formular genau dort platziert wird, wo ich es wollte Jede Schaltfläche zum Senden auf dem Layout kann meine bestimmte Seite mit den validierten Validierungen

übermitteln

Es funktioniert ziemlich gut

Vielen Dank

Grüße, Rodrigo

    
___ answer8750181 ___

Wenn %code% auf die Inhaltsseite gesetzt wird, wird das Validierungsproblem behoben. Außerdem wird eine zusätzliche Gruppe von %code% -Tags in die Ausgabe eingefügt. Ich habe eine kleine Erweiterung erstellt, die das Problem behebt, ohne etwas an die Ausgabe zu schreiben.

Verwenden Sie es als %code%

%Vor%     
___ tag123aspnetmvc3 ___ ASP.NET MVC 3 ist die dritte Hauptversion der Model-View-Controller-Erweiterung für die Entwicklung von Webanwendungen in einem .NET-Framework. ___ answer10732353 ___

Fügen Sie einfach den folgenden Code oben in der untergeordneten Ansichtdatei hinzu ...

%Vor%

es funktioniert gut für mich.

Ich hoffe, das wird dir helfen ....

    
___ tag123unobtrusivevalidation ___ Unobtrusive Validation bezieht sich auf ein jQuery-Plugin, das von Microsoft in Verbindung mit dem jQuery Validate-Plugin erstellt wurde. Es wird mit ASP.NET MVC 3 ausgeliefert. ___ answer5961345 ___

Ich habe gerade auf das gleiche Problem gestoßen, aber möglicherweise eine bessere Lösung basierend auf Darin Dimitrov Antwort

.

Der Trick besteht darin, basierend auf dem % einen Seitentyp zu erstellen. co_de% class, die Standard-Basisklasse für Ansichten und die %code% tauschen Sie dort.

%Vor%

Ändern Sie dann in der Datei %code% im Ordner %code% das Attribut %code% unter %code% element, das im Abschnitt %code% gefunden werden kann:

%Vor%     
___
Rodrigo Caballero 15.02.2011, 14:17
quelle
12

Sie könnten einen grotesken Hack in Ihrer Ansicht anwenden:

%Vor%     
Darin Dimitrov 14.02.2011 22:17
quelle
4

Wenn @using (Html.BeginForm()) auf die Inhaltsseite gesetzt wird, wird das Validierungsproblem behoben. Außerdem wird eine zusätzliche Gruppe von <form> -Tags in die Ausgabe eingefügt. Ich habe eine kleine Erweiterung erstellt, die das Problem behebt, ohne etwas an die Ausgabe zu schreiben.

Verwenden Sie es als @using (Html.BeginSubForm())

%Vor%     
Aidan Boyle 05.01.2012 21:36
quelle
1

Ich habe gerade auf das gleiche Problem gestoßen, aber möglicherweise eine bessere Lösung basierend auf Darin Dimitrov Antwort

.

Der Trick besteht darin, basierend auf dem % einen Seitentyp zu erstellen. co_de% class, die Standard-Basisklasse für Ansichten und die WebViewPage<T> tauschen Sie dort.

%Vor%

Ändern Sie dann in der Datei FormContext im Ordner Web.config das Attribut ~/Views/ unter pageBaseType element, das im Abschnitt pages gefunden werden kann:

%Vor%     
Kieron 11.05.2011 08:28
quelle
1

Fügen Sie einfach den folgenden Code oben in der untergeordneten Ansichtdatei hinzu ...

%Vor%

es funktioniert gut für mich.

Ich hoffe, das wird dir helfen ....

    
Rikin Patel 24.05.2012 06:37
quelle