Можно ли получить доступ к HttpContext в атрибуте ValidationAttribute в ASP.NET MVC? - PullRequest
6 голосов
/ 08 августа 2011

Можно ли получить доступ к HttpContext в ValidationAttribute в ASP.NET MVC 3?

Мне нужно проверить что-то в данных моего маршрута на совпадение, чтобы вернуть true в моем валидаторе.

Спасибо

Ответы [ 2 ]

6 голосов
/ 08 августа 2011

Да, вы можете получить доступ к статическому свойству HttpContext.Current, чтобы получить текущий http-контекст.

Это свойство может возвращать значение NULL в зависимости от того, в каком потоке вы выполняете проверку или в запросе, отличном от http, напримеркак в модульном тесте.

Скорее всего, вы захотите абстрагироваться от вызова, который вы делаете .Current, чтобы создать более тестируемый код.Чтобы сделать это, ваш абстрагированный член должен вернуть HttpContextBase, например:

return new HttpContextWrapper(HttpContext.Current);

Эта абстракция позволит вам передавать ложные экземпляры базы контекста http для упрощения тестирования.

0 голосов
/ 08 августа 2011

Можно, но почему бы вместо этого не использовать атрибут RemoteValidationAttribute?

...