2011-07-11 63 views
5

我需要通過頁面的兩個不同名稱訪問同一頁面。可以給一個ASPX頁面一個別名,以便它可以從兩個不同的URL訪問嗎?

例子:

CustomersDetail.aspx需要使用別名名稱PartnersDetail.aspx

CustomersDetail.aspx是真正的文件是accessable。

以下兩個網址應該映射到同一頁:

http://www.example.com/CustomersDetail.aspx  
http://www.example.com/PartnersDetail.aspx 

這可能使用Web.Config中?如果這是可能的,那麼頁面可以通過查看請求的URI來知道它訪問的是哪個url?

回答

7

4GuysFromRolla做在web.config中解釋ASP.NET 2.0的url映射方法非常出色,它允許非常易讀且易於維護的url映射。

從本質上講,你會希望把你的web.config以下system.web節內:

<urlMappings enabled="true"> 
    <add url="~/PartnersDetail.aspx" mappedUrl="~/CustomersDetail.aspx" /> 
</urlMappings> 
1

可能會有點困難,但如果你不會找到一個乾淨的解決方案,並不想深入到URL重寫爲什麼不創建第二個頁面,只是把Response.Redirect(需要頁面 - CustomersDetail .aspx - 並顯示其URL)或Server.Transfer(需要頁面和URL http://www.example.com/PartnersDetail.aspx將顯示)到Page_Load中?

+0

+1算不上什麼我正在尋找,但我想這對我的工作雖然。如果沒有更好的解決方案出現,我可能會認爲這是答案。 –

1

您也可以將UserControls放在每個頁面上。

我的意思是你可以用你想要的名字創建兩個頁面,並將實際內容放在UserControl中。之後,您將UserControl放在兩個頁面中。只要你想改變你在UserControl中改變的內容,它就會被複制。

我知道這不是最好的解決方案,但是如果你想立即使用aspx頁面,它會很好用。

+0

你是什麼意思? –

+0

我的意思是你可以用你想要的名字創建兩個頁面,並將實際內容放在UserControl中。之後,您將UserControl放在兩個頁面中。只要你想改變你在UserControl中改變的內容,它就會被複制。 – ClayKaboom

+0

+1是的,這將工作,但斯蒂芬梅薩發佈了一個更適合我的答案。謝謝! –

3

Depeding你使用,你可以添加.Net框架(3.5引入)的版本到RouteTable.Routes集合在Global.asax應用條目開始:

protected void Application_Start(object sender, EventArgs e) 
    { 
     RegisterRoutes(RouteTable.Routes); 
    } 

    void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapPageRoute("DetailReRoute", 
      "PartnersDetail.aspx", //Virtual Page 
      "~/CustomersDetail.aspx", //Physical Page 
      false, null, null); 
    } 
+0

要給這個試試謝謝!我會讓你知道它是怎麼回事。 –

+0

+1我認爲這將作爲一種編程方式來完成它,但另一個用戶發佈了一個web.config解決方案,更好地滿足我的需求。其他人會發現這個有用的,謝謝! –

相關問題