Является ли добавление runat = "server" к тегам HTML для получения относительного пути в ASP.net элегантным решением? - PullRequest
6 голосов
/ 30 декабря 2008

У меня есть несколько ASP.Net Usercontrols, которые я использую в разных местах моего нового сайта. Эти пользовательские элементы управления имели следующие ссылки:

<a href="daily/panchang/"></a>

Если usercontrol используется на страницах в различных подкаталогах, относительный путь просто не работает, и я не хочу указывать полное имя моего сайта в пути. Итак, я сделал это

<a href="~/daily/panchang/" runat="server">

и теперь маркер ASP.Net '~' корректно работает для определения корневого пути.

Можно ли пометить все мои теги HTML, где мне нужно разрешить корневой путь с помощью runat = "server", или вам известен лучший способ HTML?

Спасибо

Ответы [ 3 ]

7 голосов
/ 30 декабря 2008

Я не скажу, элегантное ли это решение, я просто укажу на альтернативу в System.Web:

<a href="<%= VirtualPathUtility.ToAbsolute("~/daily/panchang/") %>">
5 голосов
/ 30 декабря 2008

Вы должны использовать базовый тег, чтобы определить корень вашего приложения и сделать все ссылки относительно этого:

<head>
    <base href="<%= Request.ApplicationPath %>" />
</head>
...
<a href="daily/panchang/"></a> <!-- this now points to ~/daily/panchang/ -->
4 голосов
/ 30 декабря 2008

Будьте осторожны, потому что каждый элемент, имеющий runat="server", будет 'сериализован' и сохранен в ViewState каждый раз, когда возникает PostBack, и вы не хотите загромождать его бесполезными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...