2015-02-04 2 views
3

ASP.NET MVC 앱이 있습니다. 나는 내 견해에서 면도칼을 사용하고 있습니다. 내 IT 부서 때문에. 앱은 http://ourdomain.com과 같은 도메인 상단 대신에 http://ourdomain.com/appRoot과 같은 상대 루트에 위치합니다. 여기서 또 다른 도전 과제는 정적이 아니라 appRoot입니다. 실제로 바뀝니다. 그래서 Razor를 통해 상대 루트의 이름을 알아야합니다. doThis가 호출 될 때ASP.NET MVC에서 상대 URL 가져 오기

<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> 

, 나는 /appRoot/path/12345를 표시하는 경고 창을보고 싶어 : 현재, 나는 다음과 같은 일을합니다. 상대 루트를 얻으려면 nextUrl과 관련된 Razor 블록에 무엇을 넣어야합니까?

답변

4

일반적으로 mvc 라우팅 기능 Url.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>"); 

이미지는 항상 당신이에서 호출되어 상관없이 해결 방법이나 루트 withing에보기를 액세스합니다.

관련 문제