Относительный путь ASP.NET
Я запутался в относительном пути ASP.NET, пожалуйста, кто-нибудь может помочь?
На главной странице я дал ссылку на ссылку:
<a href="~/Account/Login.aspx">Login</a>
Из официальной документации ASP.NET я прочитал:
В следующем примере показан оператор ~, используемый для указания корневого пути для изображения при использовании элемента управления Image Server. В этом примере файл изображения считывается из папки "Изображения", которая расположена прямо под корнем веб-приложения, , независимо от того, где на веб-сайте находится страница.
<asp:image runat="server" id="Image1"
ImageUrl="~/Images/SampleImage.jpg" />
С разметкой Login, когда я нажимаю ссылку со страницы в папке /Account, я перенаправлен на:
/Account/~/Account/Login.aspx
Почему? Почему? Ч
Ответы
Ответ 1
Потому что вы используете его непосредственно в разметке, а не в контроле сервера. Что-то простое, как это должно исправить:
<a runat="server" href="~/Account/Login.aspx">Login</a>
В принципе, ссылка на ссылку ~
должна быть переведена на сервер, так как это ссылка на путь к серверу каталога приложения. Обычная разметка HTML не обрабатывается на сервере, она просто доставляется как есть клиенту. Только обработанный сервером код преобразует путь ~
к разрешению.
Ответ 2
используйте эту команду
<a href="<%=Page.ResolveUrl("~/product.aspx")%>" >Link To Products</a>
Ответ 3
Вы можете использовать ~ при обращении к URL-адресам внутри элементов управления ASP.NET Server.
Вы используете его в теге <a>
, который представляет собой простой HTML-код, который ничего не знает о ~. используйте ' "/Images/SampleImage.jpg" ' вместо