9 Stimmen

Kann der HttpContext innerhalb eines ValidationAttributes in ASP.NET MVC zugegriffen werden?

Kann die HttpContext innerhalb einer ValidationAttribute in ASP.NET MVC 3?

Ich muss für etwas in meiner Route Daten für eine Übereinstimmung zu testen, um true auf meine Validator zurückgeben.

Danke

7voto

nikmd23 Punkte 8985

Ja, Sie können auf die statische Eigenschaft HttpContext.Current zugreifen, um den aktuellen HTTP-Kontext zu erhalten.

Diese Eigenschaft kann Null zurückgeben, je nachdem, auf welchem Thread Sie Ihre Validierung ausführen, oder in einer nicht http-Anfrage wie in einem Unit-Test.

Höchstwahrscheinlich werden Sie den Aufruf von .Current abstrahieren wollen, um einen besser testbaren Code zu erstellen. Um dies zu tun, haben Sie Ihre abstrahierte Mitglied eine HttpContextBase zurück, wie diese:

return new HttpContextWrapper(HttpContext.Current);

Diese Abstraktion ermöglicht es Ihnen, in Mock http-Kontext Basisinstanzen für einfachere Tests übergeben.

0voto

Lee Smith Punkte 5883

Sie können, aber warum verwenden Sie nicht stattdessen ein RemoteValidationAttribute?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X