использование тильды (~) в пути asp.net - PullRequest
69 голосов
/ 20 июня 2010

Я работаю над приложением asp.net, следующая ссылка работает в IE, но не в FF.

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

Разве это не то, что можно использовать только на сервере asp.net?управления.Где он будет заменен реальным путем?

Можно ли использовать тильду в теге привязки?Если так, что это значит?

Когда я в корне, ссылка работает

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

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

Ссылка, сгенерированная ASP.NET:

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

Это задумано?

Ответы [ 5 ]

91 голосов
/ 20 июня 2010

Вы правы, это работает только в элементах управления сервером. У вас есть следующие основные опции:

Измените на HyperLink для запуска в качестве веб-элемента управления :

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

Или запустите привязку на стороне сервера как HTML-элемент управления :

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

Или используйте Page.ResolveUrl:

<a href="<%= Page.ResolveUrl("~/BusinessOrderInfo/page.aspx") %>">...</a>
21 голосов
/ 20 июня 2010

Элементы управления HTML можно превратить в элементы управления сервером, добавив атрибут runat = "server".

<a href="~/BusinessOrderInfo/page.aspx" runat="server">
11 голосов
/ 20 июня 2010

Тильда относится к корневому каталогу приложения и будет правильно переведена в свойства элемента управления, такие как NavigateUrl.

Насколько я понимаю, если вы используете его в тегах обычного HTML, он не будет переведен ASP.Net.

0 голосов
/ 09 ноября 2017

Эту функцию также можно использовать для разрешения путей для несерверных элементов

VirtualPathUtility.ToAbsolute($"~/App_Themes/Default/Icons/myimage.gif")
0 голосов
/ 16 февраля 2017

Если вы удалите тильду и будете использовать только косую черту, вы получите тот же результат, то есть указание на корневую папку в текущем домене:

<a href="/BusinessOrderInfo/page.aspx" >
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...