想象一下带有路由的Web窗体应用程序。 一个干净的页面名称,如:
可能有以下网址:
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是直接输入还是路由的结果。
答案 0 :(得分:1)
您可以使用Page.RouteData.Values
集合来检测是否由于路由而加载了页面,而不是直接URL。这可以在Page_Load()中完成。
如果有路线数据值(您可能会检查您认为应该存在的值),那么它们就可以了。如果没有路径数据值,页面已“直接”加载,您应该重定向它们。
答案 1 :(得分:0)
您还可以查看禁用文件路由(RouteTable.Routes.RouteExistingFiles = false;
)之类的内容 - 虽然这可能很危险!