Erlaube einen leeren String-Wert für das EmailAddress Validierungsattribut

9

Ich habe eine Eigenschaft in meiner PersonDTO-Klasse:

%Vor%

Es funktioniert einwandfrei, außer dass ich leere Zeichenfolgen als Werte für mein Modell zulassen möchte, wenn ich JSON von der Clientseite aus sende:

%Vor%

Ich habe 400 bad request Antwort und

%Vor%

Es kann jedoch email value weggelassen werden:

%Vor%

Ich habe es auch versucht

%Vor%

aber es funktioniert nicht.

Soweit ich das verstanden habe, erlaubt Data Annotations Extensions pack auch keine leere Zeichenkette.

Daher frage ich mich, ob es eine Möglichkeit gibt, das standardmäßige [EmailAddress] -Attribut anzupassen, um leere Zeichenfolgen zuzulassen, so dass ich kein benutzerdefiniertes Validierungsattribut schreiben muss.

    
makambi 05.05.2014, 15:07
quelle

1 Antwort

20

Sie haben zwei Möglichkeiten:

  1. Konvertieren Sie string.Empty im Feld E-Mail in null. Das ist oft akzeptabel. Sie können dafür sorgen, dass dies global funktioniert, oder indem Sie Ihren Setter einfach dazu veranlassen, string.Empty im E-Mail-Feld in null zu konvertieren.
  2. Schreiben Sie ein benutzerdefiniertes EmailAddress-Attribut, da EmailAddressAttribute versiegelt ist, können Sie es umschließen und Ihre eigene IsValid-Weiterleitungsmethode schreiben.

Beispiel:

%Vor%

Erweiterung auf Option 1 (von Web Api konvertiert keine json leeren Zeichenfolgenwerte in null )

Fügen Sie diesen Konverter hinzu:

%Vor%

und in der Eigenschaft verwenden:

%Vor%

oder global in WebApiConfig.cs:

%Vor%     
Yishai Galatzer 05.05.2014, 15:32
quelle