2011-07-25 29 views
1

我在ASP.NET WebForms和C#中工作。 我想爲不同的頁面添加路由。這是從我的Global.asax樣本代碼註冊路線在ASP.NET中處理路線

protected void Application_Start(object sender, EventArgs e) 
{ 
    RegisterRoutes(RouteTable.Routes); 
    //AppSettings = AppConfig.AppSettings.Settings; 
    //ConSettings = AppConfig.ConnectionStrings.ConnectionStrings; 
} 

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.Add("Admin_Users_Update", new Route("Admin/Users/Update/{UserId}", new RoutingHandler("~/Forms/Admin/Users/UpdateUser.aspx"))); 
} 

它工作正常。如果我們打開像/ Admin/Users/Update/1這樣的URL,它會很好地打開編輯表單。 但如果不遵循模式或進行任何更改,問題就會開始。如果我們輸入

/Admin/Users/Update/1/2 

/Admin/Users/Update/ 

喜歡它只會顯示一個404錯誤頁面。

你知道我們該怎麼處理它嗎?因此,如果url模式沒有什麼區別,我們仍然可以處理它。

回答

1

那麼,如果你指定了一個模式,並要求路由處理程序來尋找它,它只會尋找該模式。框架遵循你的規則。

您的選項是

1)找出所有可能的不同圖案和註冊路線(你大概可以使用一些身份證/ 1/2等)。

2)您可以指定路由規則的正則表達式。看看here

3)查看開源url rewriter。它可能會給你你想要的..樣品here

4)跳過路由並使用您自己的http模塊,它位於管道中監聽請求並自行處理。您可能仍然可以通過閱讀路由處理器部分並應用它來利用內置路由。我不確定但值得一試。

+0

我們怎樣才能做到這一點? 「跳過路由並使用您自己的http模塊,該模塊位於管道中監聽請求並自行處理。」 – Riz

+0

本文解釋瞭如何使用自定義http模塊來處理您自己的路由。您可以在「查找」部分指定一些基本模式,在模塊中檢索它並按照需要進行按摩。 http://msdn.microsoft.com/en-us/library/ms972974.aspx –