Wie aktualisiere ich ModelState?

8

Dies ist eine Controller-Aktion, die ich mit der ajax post-Methode aufruft:

%Vor%

Wenn der Benutzer angemeldet ist, hat das Formular keine Benutzernamen- und E-Mail-Felder, so dass sie nicht von einem Ajax-Anruf weitergeleitet werden. Wenn die Aktion aufgerufen wird, gibt ModelStat.IsValid den Wert false zurück, da diese beiden Eigenschaften erforderlich sind. Nachdem ich gültige Werte für Eigenschaften festgelegt habe, wie löst ich die Modellüberprüfung aus, um ModelState zu aktualisieren?

    
frennky 31.01.2011, 19:42
quelle

2 Antworten

4

Sie können ein benutzerdefiniertes Modellbinder verwenden, um die Kommentare zu binden Benutzername und E-Mail-Eigenschaften von User.Identity. Da die Bindung vor der Validierung stattfindet, ist der ModelState dann gültig.

Eine weitere Option ist die Implementierung eines benutzerdefinierten Modellvalidators für die Comment-Klasse, die den ControllerContext.Controller auf Gültigkeit überprüft Benutzer.

Wenn Sie eine dieser Optionen implementieren, können Sie die erste if-Prüfung entfernen.

    
m0sa 31.01.2011, 20:28
quelle
3

Sie können versuchen, die integrierte Methode TryUpdateModel aufzurufen Das gibt einen booleschen Wert zurück, so dass Sie diesen Wert überprüfen können.

UPDATE: Verwenden Sie TryUpdateModel mit Ausnahmen. Verwenden Sie eine Formsammlung anstelle von Kommentar in die Aktion.

%Vor%     
Jon 31.01.2011 20:15
quelle

Tags und Links