可以在ASP.NET MVC中的ValidationAttribute中访问HttpContext吗?

GON*_*ale 7 .net validation asp.net-mvc custom-attributes

可以在ASP.NET MVC 3中HttpContext访问ValidationAttribute吗?

我需要在路由数据中测试一些匹配项,以便在我的验证器上返回true.

谢谢

nik*_*d23 6

是的,您可以访问静态HttpContext.Current属性以获取当前的http上下文.

此属性可能会返回null,具体取决于您正在运行验证的线程,或者在非http请求(例如单元测试)中.

您很可能希望抽象出您对.Current进行的调用,以便创建更多可测试的代码.要做到这一点,让你的抽象成员返回一个HttpContextBase,如下所示:

return new HttpContextWrapper(HttpContext.Current);
Run Code Online (Sandbox Code Playgroud)

这种抽象将允许您传递模拟的http上下文基础实例,以便于测试.