asp.net-mvc - ASP.NET MVC-生成没有Http/请求上下文的路由

标签 asp.net-mvc routing httpcontext

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

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

最佳答案

确实,这是一个很好的问题。路由本身确实与从正在运行的ASP.NET应用程序中进行调用有一些依赖关系,例如获取应用程序的根URL以及该URL中也包含的任何无cookie形式或 session cookie。虽然创建模拟对象是一种理论上的解决方案,但是不建议在运行时使用它。

我的建议是在这种情况下完全不要使用路由,而将URL硬编码到电子邮件中。电子邮件中的链接必须具有完全限定的URL(主机名+路径),并且路由甚至无法生成该URL的主机名,因此您必须进行硬编码。

关于asp.net-mvc - ASP.NET MVC-生成没有Http/请求上下文的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1931068/

相关文章:

asp.net-mvc - 如何从 ASP.NET MVC 1 中的 HttpContextBase 获取 HttpContext 对象?

asp.net - 从 C# 类访问 ASP.NET 页面的 TextBox 值

asp.net-mvc - 使用 ASP.NET MVC 实现 Google 的 hashbang/Ajax 抓取?

regex - Express.js : how to make app. 在 req.param 中得到 ('/[:userId]i' ..)?

javascript - .net 日期时间转 JavaScript 日期

jquery - 在 MVC 页面中添加 jQueryUI 脚本的位置

asp.net-mvc - ASP.NET MVC 路由和区域

c# - HttpContext 在类库中不可用

c# - 动态生成复选框,并选择其中的一些作为选中

asp.net - 对字符进行编码