Asp.net MVC 3 Validierung schließt einige Feldüberprüfungen in TryUpdateModel aus

7

Ich verwende ASP.NET MVC Razor und Data Annotation Validatoren Mein Modell:

%Vor%

Vorname und Nachname werden angefordert. Ich möchte Vornamen bearbeiten. Meine Methode ist:

%Vor%

Aber TryUpdateModel gibt immer false zurück. weil LastName ungültig ist.

Wie kann ich die Überprüfung der Gültigkeit von Nachnamen in TryUpdateModel verhindern?

Hinweis:

  • Der Code ist vereinfacht. mein realer Code ist sehr komplex
  • Ich muss Required für zwei Eigenschaften verwenden
  • Ich möchte keine andere Modellklasse verwenden
Morteza 07.03.2012, 15:14
quelle

4 Antworten

17

Ich habe eine gute Lösung gefunden. Ich muss unbenutztes Feld von ModelState entfernen. dann gibt ModelState.IsValid true zurück. Zuerst muss ich eine neue Attributklasse erstellen:

%Vor%

Dann füge ich Attribut auf meiner Methode hinzu:

%Vor%

Schau dir das an: Ссылка

    
Morteza 08.03.2012, 09:27
quelle
13

Sie können die Eigenschaften entfernen, die Sie nicht benötigen, bevor Sie überprüfen, ob das Modell gültig ist.

%Vor%     
Priyanka 24.04.2013 12:15
quelle
7

Eine sehr einfache Lösung, die ich herausgefunden habe.

%Vor%     
Desmond 01.11.2012 01:41
quelle
4

Kurze Antwort: Sie können die Standarddatenanmerkungen nicht verwenden.

Längere Antwort: Sie haben mehrere Möglichkeiten.

  1. Sie können Ihre eigenen Validator-Annotationen erstellen.
  2. Sie können Ihre Modellklasse von IValidatableObject erben lassen und dann die Validate-Methode implementieren. (Dies macht jedoch keine clientseitige Validierung).
  3. Sie können eine Validierungsbibliothek von Drittanbietern wie FluentValidation verwenden.
  4. Sie können für dieses Szenario ein anderes Modell erstellen.
  5. Sie können die Überprüfung entfernen und Ihrer Aktionsmethode einfach Code hinzufügen, um zu überprüfen, ob die Felder korrekt sind. (Dies wird nicht empfohlen, da dies die Komplexität Ihrer Controller-Aktion erhöht, und Sie müssen diese Funktionalität überall dort duplizieren, wo Sie dieses Modell verwenden).
Erik Funkenbusch 07.03.2012 16:05
quelle

Tags und Links