ASP.NET MVC - 在没有Http /请求上下文的情况下生成路由

bro*_*nko 9 asp.net-mvc routing httpcontext

我希望能够从RouteCollection生成URL而无需访问HttpContext.查看RouteCollection的实现方式,所有方法都需要访问RequestContext才能获取虚拟路径.

我通过模拟HttpContext解决了这个问题,但这增加了对RhinoMocks的尴尬依赖,并不是一个合理的解决方案.我是否有其他选项可以在上下文之外生成Urls?

Jar*_*yer 1

抱歉,但是要习惯 MVC 框架中的模拟。一旦你开始测试,你就会需要它。这里有很多东西:HttpContext、Session、Server——所有东西都会泄漏到你的控制器中。如果你想生成路径,你要么需要与 HttpContext 对话(在 MVC 中,这实际上是 HttpContextBase,所以我猜你可以编写自己的具体实现),或者你需要模拟它。

  • 在这些情况下,我在 RouteData 中设置了特殊路线,并在电子邮件中对路线进行了硬编码。这样,我引用了 http://www.mysite.com/reset_password,并且知道无论该电子邮件是如何生成的,它都会被正确路由。 (2认同)