2011-07-11 13 views
5

Aynı sayfaya sayfa için iki farklı adla erişmem gerekiyor.Bir ASPX sayfasına iki farklı URL'den erişilebilmesi için bir takma ad verilebilir mi?

Örnek:

CustomersDetail.aspx ad verilmiş isim PartnersDetail.aspx

CustomersDetail.aspx gerçek dosyasıdır kullanarak erişilebilir olması gerekir.

Aşağıdaki url'lerin ikisi de aynı sayfaya haritalandırmalıdır:

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

web.config kullanarak bu mümkün mü? Bu mümkün ise, sayfa uri'ye bakarak hangi URL'ye erişildiğini bilir mi?

cevap

7

4GuysFromRolla yapar ASP.NET 2.0'ın web.config içindeki URL haritalama yöntemini açıklamak için mükemmel bir iştir, bu da çok okunabilir ve kolayca sürdürülebilen URL haritalaması sağlar. Benim aradığım Gerçekten neyi

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

Biraz zor olabilir, ancak temiz bir çözüm bulamazsanız ve URL-yeniden yazmayı derinlemesine yapmak istemiyorsanız, ikinci sayfayı neden oluşturmaz ve yalnızca Response.Redirect'i (sayfa gerekir) - clientsDetail .aspx - ve bunun URL'si gösterilir) veya Server.Transfer (sayfa gerekli ve URL http://www.example.com/PartnersDetail.aspx gösterilecek) Page_Load?

+0

+1 ama olsa benim için işe yarar mı:

Esasen sen system.web bölümün içine web.config aşağıdaki koymak isteyeceksiniz . Daha iyi bir çözüm gelmezse bunu cevap olarak kabul edebilirim. –

1

Ayrıca her sayfada UserControls koyabilirsiniz.

Her iki sayfayı da oluşturabilir, istediğiniz isimleri ve gerçek içeriği bir UserControl içine yerleştirebilirsiniz. Bundan sonra, UserControl'ü her iki sayfaya da koydunuz. Ne zaman içeriği değiştirmek istediğinizde sadece UserControl değiştirir ve çoğaltılacak.

Bunun en iyi çözüm olmadığını biliyorum, ancak hemen aspx sayfalarını istiyorsanız iyi çalışıyor. Eğer ekleyebilir kullandığınız (3,5 tanıtılan) .Net Framework sürümüne

+0

Bununla ne demek istiyorsun? –

+0

Her iki sayfayı da oluşturabiliyorsunuz, istediğiniz isimleri ve gerçek içeriği bir UserControl içine yerleştirebiliyorsunuz. Bundan sonra, UserControl'ü her iki sayfaya da koydunuz. Ne zaman içeriği değiştirmek istediğinizde sadece UserControl değiştirir ve çoğaltılacak. – ClayKaboom

+0

+1 Evet, bu işe yarayacaktı ama Stephen Mesa benim için daha iyi bir cevap verdi. Teşekkürler! –

3

Depeding uygulamaya Global.asax RouteTable.Routes koleksiyonuna bir giriş başlatın:

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

Bunu bir deneyin için teşekkür ederiz! Nasıl gittiğini size bildiririm. –

+0

+1 Bunun, bunun başarılması için programatik bir yol olarak çalışacağını düşünüyorum, ancak başka bir kullanıcı, ihtiyaçlarım için daha iyi çalışan bir web.config çözümü yayınladı. Başka birileri bunu yararlı bulacaktır, teşekkürler! –

İlgili konular