Можно ли дать странице ASPX псевдоним, чтобы к ней можно было получить доступ с двух разных URL-адресов? - PullRequest
5 голосов
/ 11 июля 2011

Мне нужно получить доступ к одной и той же странице через два разных имени для этой страницы.

Пример:

CustomersDetail.aspx должен быть доступен с использованием псевдонима PartnersDetail.aspx

CustomersDetail.aspx - это настоящий файл.

Оба изследующие URL-адреса должны отображаться на одной странице:

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

Возможно ли это с помощью Web.Config?Если это возможно, может ли страница узнать, с какого URL был получен доступ, посмотрев, что запрос uri?

Ответы [ 4 ]

7 голосов
/ 11 июля 2011

4GuysFromRolla отлично объясняет метод отображения URL в ASP.NET 2.0 в файле web.config, который обеспечивает очень удобочитаемое и легко поддерживаемое отображение URL.

По существу, вызахочет поместить в ваш web.config внутри раздела system.web следующее:

<urlMappings enabled="true">
  <add url="~/PartnersDetail.aspx" mappedUrl="~/CustomersDetail.aspx" />
</urlMappings>
3 голосов
/ 11 июля 2011

В зависимости от используемой версии .Net Framework (представленной в 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);
    }
1 голос
/ 11 июля 2011

Вы также можете разместить UserControls на каждой странице.

Я имел в виду, что вы можете создать обе страницы с нужными именами и поместить фактический контент в UserControl. После этого вы помещаете UserControl на обеих страницах. Всякий раз, когда вы хотите изменить контент, вы просто изменяете его в UserControl, и он будет реплицирован.

Я знаю, что это не лучшее решение, но хорошо работает, если вам сразу нужны страницы aspx.

1 голос
/ 11 июля 2011

Может быть, это немного сложно, но если вы не найдете чистого решения и не хотите углубляться в переписывание URL, почему бы не создать вторую страницу и просто поместить Response.Redirect (страница необходима - CustomersDetail. aspx - и его URL будет показан) или Server.Transfer (необходима страница и будет показан URL http://www.example.com/PartnersDetail.aspx) в Page_Load?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...