0

想象一个带有路由的 Web 窗体应用程序。一个干净的页面名称,如:

http://www.mywebsite.com/home

可能具有以下 URL 的基础:

http://www.mywebsite.com/page.aspx?id=3

如果用户在浏览器中输入http://www.mywebsiter.com/page.aspx?id=3,我需要重定向到http://www.mywebsite.com/home

这可能吗?我无法找到一种方法来执行此操作,因为路由引擎没有针对物理页面执行,并且在 page.aspx Page_Load 方法中我无法知道 URL 是直接输入的还是路由的结果。

4

2 回答 2

1

您可以使用该Page.RouteData.Values集合来检测页面是否由于路由而不是直接 URL 而被加载。这可以在 Page_Load() 中完成。

如果有路线数据值(您可能会检查您知道应该存在的值),那么它们就可以了。如果没有路由数据值,则页面已“直接”加载,您应该重定向它们。

于 2010-10-05T23:35:56.600 回答
0

查看IIS URL 重写模块

您还可以查看诸如禁用文件路由 ( RouteTable.Routes.RouteExistingFiles = false;) 之类的事情——虽然这可能很危险!

于 2010-10-05T23:41:09.803 回答