是否可以为ASPX页面提供别名,以便可以从两个不同的URL访问它?

时间:2011-07-11 17:16:15

标签: asp.net web-config

我需要通过页面的两个不同名称访问同一页面。

示例:

CustomersDetail.aspx需要使用别名PartnersDetail.aspx

进行访问

CustomersDetail.aspx是真实文件。

以下两个网址都应映射到同一页面:

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

这可以使用Web.Config吗?如果这是可能的,页面可以通过查看请求uri知道访问了哪个URL?

4 个答案:

答案 0 :(得分:7)

4GuysFromRolla在web.config中解释ASP.NET 2.0的url映射方法非常出色,它允许非常易读且易于维护的url映射。

基本上,您需要将以下内容放在system.web部分的web.config中:

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

答案 1 :(得分:3)

根据您使用的.Net Framework(在3.5中引入)的版本,您可以在应用程序启动时在Global.asax中为RouteTable.Routes集合添加一个条目:

    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);
    }

答案 2 :(得分:1)

可能有点难,但是如果你找不到一个干净的解决方案并且不想深入进行URL重写,为什么不创建第二页并只放入Response.Redirect(需要页面 - CustomersDetail。 aspx - 及其URL将被显示)或Server.Transfer(需要页面,URL http://www.example.com/PartnersDetail.aspx将显示)到Page_Load?

答案 3 :(得分:1)

您也可以在每个页面上放置UserControl。

我的意思是您可以使用所需的名称创建两个页面,并将实际内容放在UserControl中。之后,将UserControl放在两个页面中。每当您想要更改内容时,您只需在UserControl中更改它,它就会被复制。

我知道这不是最好的解决方案,但如果您想立即使用aspx页面,效果会很好。