2010-06-19 13 views
64

Bir asp.net uygulamasında çalışıyorum, aşağıdaki bağlantı IE'de çalışıyor ancak FF'de çalışmıyor.asp.net yolunda tilde (~) kullanımı

<a href="~/BusinessOrderInfo/page.aspx" > 

Yalnızca asp.net sunucu denetimlerinde kullanılabilecek bir şey değil. Gerçek bir yolla nerede değiştirilecek?

Tilde bağlantı etiketinde kullanmak mümkün mü? Eğer öyleyse bu ne anlama geliyor?

ASP.NET tarafından oluşturulan

www.myserver.com/default.aspx, click the link, ok! 

www.myserver.com/otherpart/default.aspx, click the link, not ok! 

link ben kökünde olduğum zaman, bağlantı işleri:

www.myserver.com/otherpart/~BusinessOrderInfo/page.aspx 

tasarım gereği bu mu?

cevap

89

Doğru, yalnızca sunucu denetimlerinde çalışıyor. HTML Control bir sunucu tarafında çapa çalıştırmak,

<asp:HyperLink NavigateUrl="~/BusinessOrderInfo/page.aspx" Text="Whatever" runat="server" /> 

Veya: Web Control bir şekilde çalıştırmak için

Değişim HyperLink için: Bu temel seçenekleri var

<a href="~/BusinessOrderInfo/page.aspx" runat="server" > 

Ya da, Page.ResolveUrl:

20

HTML denetimleri, runat = "server" özniteliği ekleyerek sunucu denetimlerine dönüştürülebilir.

<a href="/BusinessOrderInfo/page.aspx" > 
+0

Aklınızda bulundurun - downside Bu, performansın zedelenmesidir çünkü görüntü etiketleri, sayfa oluşturulduğunda sunucu kontrollerine dönüştürülür, buna gerçekten ihtiyaç yoktur. – atconway

0

sunucu olmayan öğeler için

VirtualPathUtility.ToAbsolute($"~/App_Themes/Default/Icons/myimage.gif") 
-1

Bu fonksiyon da yolları çözmek için kullanılabilir: Eğer tilde kaldırmak ve sadece aynı sonucu, yani geçerli etki alanında kök klasörüne işaret ulaşacak eğik çizgi kullanırsanız

<a href="~/BusinessOrderInfo/page.aspx" runat="server">