2011-12-03 53 views
0

考慮這種情況,其中/cpanel/x模式中的所有傳入鏈接應該被轉換(重新編譯)爲/marketer/x,其中x表示URL的其餘部分。例子有:ASP.NET WebForms中的常規路由,將「/ cpanel /」更改爲「/ marketer /」

  1. /cpanel/coupons.aspx/marketer/coupons.aspx
  2. /cpanel/sold.aspx?year=2010&product=camera到/marketer/sold.aspx?year=2010 &產品= camera`

這似乎是一個普通的URL重寫,我們已經使用HttpContext.Current.RewritePath和一個HTTP模塊完成。但是,我也想知道這是否可以使用ASP.NET路由功能在Web窗體中完成?

的要求是:

  1. 如何定義路由規則
  2. 如何產生與這條路線規則

回答

1

網址**的EDITED後評論**

你可以做這使用與Web表單路由。爲了獲得您想要的功能,可以重寫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讀一切事情,從點到結束,不管有什麼。我們有它的方式設置是你可以把任何具有「/營銷/ ...」的URL,它將被重寫爲「/ cpanel/.....」

希望這會有所幫助。祝你好運!

+0

感謝您的幫助。但是這種方法不支持DRY(不要重複自己)的原則,因爲這裏沒有集權。想象一下,我有10,000頁需要從「優惠券」路由到「營銷者」。那你怎麼辦呢? –