Asp.net webapi enum Parameter mit Standardwert

8

Ich habe einen Controller

%Vor%

Myenum wird als

deklariert %Vor%

Momentan, wenn ein Müllwert übergeben wird, wird er in den Standardwert konvertiert.  Was ich tun möchte ist, wenn ich den Controller als api / products / 1 aufrufen, dann sollte der ptype Standardwert, d. H. Kleidung. Wenn ich den Controller als api / products / 1? PType = some-garbagevalue nenne, sollte der Controller eine Exception für eine fehlerhafte Anfrage auslösen. Wie kann ich das erreichen?

    
user3832953 13.07.2014, 07:10
quelle

2 Antworten

6

Sie müssen mit string arbeiten und TryParse() verwenden, um die Zeichenfolge in Enum value zu konvertieren.

%Vor%

Es mag naiv aussehen, aber der Vorteil dieses Ansatzes besteht darin, ptype -Parameter auf jede Zeichenfolge zu setzen und den Prozess ohne Ausnahme auszuführen, wenn ptype den Wert nicht bindet.

    
Youngjae 12.09.2014, 16:00
quelle
13

Wenn Sie all Ihre enum-Parameter als Zeichenfolgen definieren und sie dann überall analysieren, müssen Sie dies bei jeder einzelnen Aktion tun und Sie müssen einen konsistenten Ansatz finden, bei dem alle Analysefehler übereinstimmen.

Dies ist ein Parameterbindungsproblem und sollte nicht in der Controller-Schicht behandelt werden, es sollte in der Pipeline erledigt werden. Eine Möglichkeit besteht darin, einen benutzerdefinierten Filter zu erstellen und ihn zu Ihrer Konfiguration hinzuzufügen.

%Vor%

Und in Ihrer global.asax.cs

%Vor%

Wenn Sie Probleme mit dem Modellstatus haben, ist der Typ ein ModelStateDictionary, und Sie durchlaufen einfach eine iterative Methode, und die Errors-Eigenschaft enthält alle Modellbindungsprobleme. z.B.

%Vor%     
HeroicNonsense 19.03.2015 02:39
quelle

Tags und Links