또는 내가 원하는 결과를 얻을 수있는 또 다른 방법은 무엇입니까?
실제로 있습니다. 해당 URL을 매개 변수로 사용하도록 자바 스크립트 함수를 디자인하십시오.
<script type="text/javascript">
myJsInitialize('@Url.Action("Foo")', '@Url.Content("~/bar")');
</script>
또는 또 다른 가능성은 자바 스크립트가 작업하는 DOM의 일환으로 해당 URL을하는 것입니다 : 그럼 당신이해야 할 모든 필요한 URL을보기에 초기화 호출을 떠나 전달하는 것입니다. 예를 들어의 당신이 링크를 가지고 있다고 가정하자 그리고 당신은이 링크를 클릭하는 AJAX 요청을 보내려 :
@Html.ActionLink("click me", "someaction", null, new { id = "mylink" })
과 별도의 js에서
이미 URL을 포함하는 링크의 href 속성을 사용 파일을 :
$('#mylink').click(function() {
$('#result').load(this.href);
return false;
});
하지만이 기능에서 예를 들어 다른 URL이 필요한 경우 어떻게 될까요? 예를 들어, 드롭 다운의 선택이 변경 될 때 AJAX를 사용하여 액션을 호출해야한다고 가정 해 보겠습니다. 이 경우 드롭 다운에 HTML5 data-*
속성을 사용할 수
@Html.DropDownListFor(
x => x.SelectedItem,
Model.Items,
new {
id = "myddl",
data_url = Url.Action("someaction")
}
)
및 후 별도의 자바 스크립트 파일 :
$('#myddl').change(function() {
var selectedValue = $(this).val();
var url = $(this).data('url');
$.post(url, { value: selectedValue }, function(result) {
// ...
});
});
우리는 더 이상 자바 스크립트 기능을 서버 측에 의존해야 할 필요가 방법을 참조하십시오 없습니다 Url.Action
또는 Url.Content
과 같은 도우미? 이렇게하면 IIS 가상 디렉터리에 응용 프로그램을 배포 할 때 응용 프로그램이 작동하지 않도록 걱정하지 않고 별도의 javascript 파일에 저장할 수 있습니다.
예를 들어 [이 답변] (http://stackoverflow.com/questions/9366169/mvc4-razor-confused-about-braces/9367621#9367621) - 및 다른 장소에있을 수 있습니다. 일반적으로 "엄청난"양의 자바 스크립트를 출력하는 데 Razor를 사용하는 것은 좋지 않지만 대부분이 질문에서 해당 방법 중 하나를 사용하여 문제를 해결할 수 있어야합니다. – JimmiTh
URL을 사용자가 볼 수 있도록 초기화 할 수있는 라이브러리로 JS를 디자인하는 것이 더 쉬울 것입니다. –
@The Kaneda - 링크 주셔서 감사합니다. 실제로 다른 답변보다 먼저 작동하고 있습니다. – sambomartin