【发布时间】:2014-06-21 07:21:26
【问题描述】:
我正在寻找一种方法来更改调用UrlHelper 或Control.ResolveUrl() 上的许多方法生成的URL,这种方法对开发人员来说是完全透明的。
主要方案是向 URL 添加语言“标签”。开发人员像往常一样创建到操作或到 ASPX 页面的链接,但是 URL 生成被“拦截”以使链接“语言感知”可以这么说。我不希望看到这种跨领域关注“泄漏”到代码中。 (当用户点击链接时,URL 中的语言标签被解释,请求被重写,所以它“正常工作”。)
ASP.NET 是否具有执行此操作所需的扩展点?换句话说:我可以注册什么样的类(以及我在哪里注册)在生成 URL 时总是被调用?
粗略浏览aspnetwebstack.codeplex.com 的源代码表明,ASP.NET 最终依赖于VirtualPathUtility 类,但与VirtualPathProvider(用于将传入的 URL 解析到磁盘上的文件)不同,它无法实现(它是一个静态类)。
【问题讨论】:
-
您也不能更改 URL,但可以更改它们的解释方式。
-
@JohnSaunders 你能详细说明一下吗?
-
不是我最喜欢的处理 url 的方式,但看看:iis.net/downloads/microsoft/url-rewrite。这发生在 IIS 级别。否则,您正在寻找的课程是您不想出于 w/e 原因使用的课程,这就是路由。我建议通过 url 重写路由,它更易于管理,但如果你想要快速的东西来一次性使用 url rewrite。
-
Global.asax 可以提供帮助,请看这里:stackoverflow.com/questions/15107213/rewrite-url-in-asp-c-sharp/…
-
这些是处理/解释传入请求的好例子。我更关心的是为页面上的超链接生成一致的 URL。
标签: asp.net