ASP.NET WebForms中的常规路由,将“/ cpanel /”更改为“/ marketer /”

时间:2011-12-03 08:45:27

标签: asp.net routing url-rewriting

考虑这种情况,其中/cpanel/x模式中的所有传入链接都应转换(重新)到/marketer/x,其中x代表URL的其余部分。例如:

  1. /cpanel/coupons.aspx/marketer/coupons.aspx
  2. /cpanel/sold.aspx?year=2010&product=camera至/ marketer/sold.aspx?year = 2010& product = camera`
  3. 这似乎是一般的URL重写,我们使用HttpContext.Current.RewritePath和HTTP模块完成了它。但是,我还想知道是否可以使用ASP.NET路由功能在Web表单中完成此操作?

    要求是:

    1. 如何定义路线规则
    2. 如何生成与此路线规则相关的网址

1 个答案:

答案 0 :(得分:1)

**评论后编辑**

您可以使用使用网络表单进行路由来执行此操作。要获得可以重写10,000个URL的所需功能,只需将“cpanel”替换为“营销人员”,您需要使用通配符。为此,请在Global.asax文件中添加以下命名空间和方法:

<%@ Import Namespace="System.Web.Routing" %>

void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("{resource}.axd/{*pathInfo}");

    //--- format ("Name", "Route", "Handler")
    routes.MapPageRoute("cPanel", "marketer/{*RouteCPanel}", "~/cpanel/{*RouteCPanel}");
}
void Application_Start(object sender, EventArgs e)
{
    // Code that runs on application startup
    RegisterRoutes(RouteTable.Routes);
}

注意作为通配符的{* RouteCPanel},这意味着从URL中的那一点到结尾读取所有内容,无论是什么。我们设置它的方式是你可以放任何带有“/ marketer / ....”的URL,它将被重写为“/ cpanel /....."

希望这会有所帮助。祝你好运!