【发布时间】:2014-04-14 09:43:30
【问题描述】:
我们可以动态添加路由到global.asax 文件
例如,假设我有多个路线用于同一页面
虽然我的页面实际 URL 类似于 http://website.com/en/about-us。
我现在的问题是:有没有一种方法可以在global.asax 文件中动态定义这些路由,使其读取用户输入的 URL,例如http://website.com/about,然后将其与数据库表进行比较并将其重定向到正确的页面是http://website.com/en/about-us?
考虑以下表结构:
Id URL_Name URL Actual_URL Page_Handler
1 Home http://website.com/ http://website.com/ Default.aspx
2 About Us http://website.com/about http://website.com/en/about-us About.aspx
3 About Us http://website.com/about-us http://website.com/en/about-us About.aspx
4 About Us http://website.com/en/about http://website.com/en/about-us About.aspx
5 Contact http://website.com/contact http://website.com/en/contact-us Contact.aspx
6 Contact http://website.com/en/contact http://website.com/en/contact-us Contact.aspx
现在我必须在global.asax 中手动配置每条路由:
if(HttpContext.Current.Request.Url.ToString().ToLower().Equals("http://website.com/about")
{
HttpContext.Current.Response.Status = "301 Moved Permanently";
HttpContext.Current.Response.Redirect("http://website.com/en/about-us");
}
if(HttpContext.Current.Request.Url.ToString().ToLower().Equals("http://website.com/en/about")
{
HttpContext.Current.Response.Status = "301 Moved Permanently";
HttpContext.Current.Response.Redirect("http://website.com/en/about-us");
}
非常感谢您提供指向一个好的示例或解决方案的指针。
【问题讨论】:
-
HTTP Handlers 也可以做到这一点,而不是将您的代码放在
global.asax中。 -
@juan.facorro,你能指点我其他的例子吗
标签: c# asp.net webforms url-routing