我需要通过页面的两个不同名称访问同一页面。
示例:
CustomersDetail.aspx
需要使用别名PartnersDetail.aspx
CustomersDetail.aspx是真实文件。
以下两个网址都应映射到同一页面:
http://www.example.com/CustomersDetail.aspx
http://www.example.com/PartnersDetail.aspx
这可以使用Web.Config吗?如果这是可能的,页面可以通过查看请求uri知道访问了哪个URL?
答案 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页面,效果会很好。