2011-07-11 5 views
5

Potrzebuję uzyskać dostęp do tej samej strony za pomocą dwóch różnych nazw dla strony.Czy strona ASPX może mieć alias, dzięki czemu można uzyskać do niego dostęp z dwóch różnych adresów URL?

Przykład:

CustomersDetail.aspx musi być accessable pomocą aliasem nazwy PartnersDetail.aspx

CustomersDetail.aspx jest prawdziwym plikiem.

Zarówno z następujących adresów URL powinny map do tej samej strony:

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

Czy to możliwe przy użyciu pliku web.config? Jeśli jest to możliwe, czy strona może wiedzieć, do którego adresu URL był dostępny, sprawdzając, czy uri jest żądane?

Odpowiedz

7

4GuysFromRolla robi doskonała praca polegająca na wyjaśnianiu mapowania adresów URL w ASP.NET 2.0 w web.config, co pozwala na bardzo czytelne i łatwe w utrzymaniu mapowanie adresów URL.

Zasadniczo będziemy chcieli umieścić następujące w Twojej web.config wewnątrz sekcji system.Web:

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

Może być nieco trudny, ale jeśli nie znajdziesz czystego rozwiązania i nie chcesz zagłębiać się w przepisywanie adresów URL, dlaczego nie utworzyć drugiej strony i po prostu wstaw odpowiedź.Redirect (strona potrzebna - CustomersDetail .aspx - i jego adres URL zostanie wyświetlony) lub Server.Transfer (wymagana strona i adres URL http://www.example.com/PartnersDetail.aspx zostanie wyświetlony) w Page_Load?

+0

+1 Nie naprawdę to, co szukam, ale myślę, że to działa na mnie chociaż . Mogę skończyć przyjąć to jako odpowiedź, jeśli nie pojawią się lepsze rozwiązania. –

1

Można również umieścić UserControls na każdej stronie.

Chodziło mi o to, że możesz stworzyć obie strony z nazwami, które chcesz i umieścić rzeczywistą zawartość w UserControl. Następnie umieść UserControl na obu stronach. Za każdym razem, gdy chcesz zmienić zawartość, którą właśnie zmieniasz w UserControl, zostanie ona zreplikowana.

Wiem, że to nie jest najlepsze rozwiązanie, ale działa dobrze, jeśli chcesz natychmiast strony aspx.

+0

Co przez to rozumiesz? –

+0

Chodziło mi o to, że możesz stworzyć obie strony z nazwami, które chcesz i umieścić rzeczywistą zawartość w UserControl. Następnie umieść UserControl na obu stronach. Za każdym razem, gdy chcesz zmienić zawartość, którą właśnie zmieniasz w UserControl, zostanie ona zreplikowana. – ClayKaboom

+0

+1 Tak, to by działało, ale Stephen Mesa opublikował odpowiedź, która działa lepiej dla mnie. Dzięki! –

3

Depeding od wersji .Net Framework (wprowadzony w 3.5), którego używasz można dodać wpis do kolekcji RouteTable.Routes w Global.asax na wniosek start:

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

Będziemy chcieli spróbować! Dam ci znać, jak to działa. –

+0

+1 Myślę, że to działałoby jak programowy sposób, aby to osiągnąć, ale inny użytkownik opublikował rozwiązanie web.config, które działało lepiej dla moich potrzeb. Ktoś inny uzna to za przydatne, dzięki! –

Powiązane problemy