2010-07-21 2 views
3

У меня есть страница, которая глубоко вложена. И тот, который находится в корневом пути. Внутри глубоко вложенной страницы у меня есть якорный тег, который должен перейти на другую страницу (которая отсутствует в корне, но легко указать корневой относительный путь).asp.net: ссылайтесь на страницу относительно корня в обычных элементах управления html на стороне сервера

Я сделал следующее пытается определить корневой относительный путь:

<a href="~/home/main.aspx">Home</a> -> Это один дает мне ошибку 404. Он не может разрешить часть ~ корневому пути.

Другой вариант путешествовать один каталог вверх:

<a href="../../../home/main.aspx">Home</a> -> Это головная боль.

Тогда я попытался это:

<a href="/home/main.aspx">Home</a> -> Это дало мне 404 раз. Он просто удалил то, что появилось после части localhost:<port_number>/, и наложил ее на /home/main.aspx.

Каков путь к этому пути?

PS: Я предполагаю, что относительный путь корневого рассосется для сервера управления

ответ

6

Тильда (~) распознается только методом WebControl.ResolveUrl, поэтому вам придется вызывать этот метод на Page, который является WebControl

<a href='<%=ResolveUrl("~/home/main.aspx") %>'>Home</a> 
+0

+1 спасибо за информацию – deostroll

+0

Но я также вид исправлено это, установив свойство 'Virtual Path' в'/'. Это помогло ... – deostroll

+1

@deo - '/' и '~ /' ссылаются на 2 разных пути - в то время как они могут казаться одинаковыми в вашей среде разработки на вашем сервере, они могут быть разными. '/' является абсолютным корнем сервера, тогда как '~/'является абсолютным корнем текущего приложения. Вы видите разницу? Обычно вы хотите использовать '~ /'. Убедитесь, что когда вы используете '/', чтобы вы понимали, где именно * будет указывать. –

0

Если вы используете управление гиперссылка asp.net вы сможете использовать «~». Если вы не хотите использовать серверный контроль, я думаю, что вы застряли.

'/' приведет вас к корню сайта по обычной ссылке, но вы должны проверить, как настроен виртуальный каталог.