2015-02-04 3 views
3

У меня есть приложение ASP.NET MVC. Я использую Razor в своих взглядах. Из-за моего отдела ИТ. приложение находится на относительном корне, таком как http://ourdomain.com/appRoot, а не в верхней части домена, например http://ourdomain.com. Другой проблемой здесь является то, что appRoot не является статическим. Это на самом деле меняется. По этой причине мне нужно получить имя относительного корня через Razor. В настоящее время, у меня есть что-то вроде следующего:Получить относительный URL в ASP.NET MVC View

<input id="hiddenElem" type="hidden" value="12345" /> 
<script type='text/javascript'> 
    function doThis() { 
    var id = $('#hiddenElem').val(); 
    var nextUrl = '@(Request.?)' + '/path/' + id; 
    alert(nextUrl); 
    } 
</script> 

Когда doThis называется, я хочу, чтобы увидеть окно предупреждения, чтобы отобразить /appRoot/path/12345. Что я вставляю в блок Razor, связанный с nextUrl, чтобы получить относительный корень?

ответ

4

Как правило, вы должны использовать функцию маршрутизации mvcUrl.Action().

function doThis() { 
    var id = $('#hiddenElem').val(); 
    var nextUrl = '@Url.Action("MyAction","MyController")' + '/path/' + id; 
    alert(nextUrl); 
    } 

Html.ResolveUrl() функция отлично подходит для разрешения относительных путей, однако, он не принимает во внимание маршрутизации.

Кроме того, использование функции Url.Content() может привести к ожидаемому результату. Например, в приведенном ниже фрагменте кода:

.Template("<img src='"+ @Url.Content("~/Images/Icons/16/STATE.png")+"'/> <mark>${data.StateName }</mark>"); 

Изображение всегда будет решать независимо от того, где вы вызываете его из или, как вы обращались вид жгутов корень.

Смежные вопросы