Как создать относительный URL в элементе ссылки html для веб-приложения, работающего на IIS? - PullRequest
0 голосов
/ 10 июня 2011

Допустим, у меня есть веб-приложение:

www.mymvcsite.com / MyVirtualDirectory / Controller / Action

На мой взгляд, у меня есть <a href="/FolderA/myfile.pdf">.Проблема в том, что весь Html приходит из базы данныхАга!Вы думали, что это так же просто, как @ Url.Content () ... ну, это не работает, потому что HTML-код динамический на самом деле, я понятия не имею, что в разметке есть даже элемент ссылки, я слепо выводить его наview.

Итак, что мне нужно добавить в href для правильного разрешения URL.

Т.е."myfile.pdf" находится в ...www.mymvcsite.com/MyVirtualDirectory/FolderA/myfile.pdf

НО по какой-то причине в браузере URL заканчивается"www.mymvcsite.com/FolderA/myfile.pdf"

Обратите внимание, что" MyVirtualDirectory "отсутствует!Я даже попытался добавить "~" в URL, но это тоже не работает.

Спасибо!

1 Ответ

0 голосов
/ 10 июня 2011

Вам необходимо сохранить относительный URL в скрытом поле:

<input id='hidPartialUrl' type='hidden' value='<%:ResolveUrl("~/") %>'/>

Все ссылки должны относиться к корню сайта и иметь общее имя класса:

<a href='/FolderA/myfile.pdf' class='fixThisLink'>PDF</a> 

Затем, когда вы загружаете его на страницу, вы делаете:

var hiddenHref = document.getElementById('hidPartialUrl').href;
var links = document.getElementsByClassName('fixThisLink'); 
for(var i = 0; i < links.length; i++) {
    links[i].href = hiddenHref + links[i].href;
}

Установите свойство href для каждого возвращаемого объекта, чтобы оно включало первую часть вашего URL. Я бы сохранил первую часть вашего URL в скрытом поле.

...