외부 js 파일의 Asp.Net Mvc Url.Action?
외부 js 파일에서 사용할 수 없습니다.
url = "@Url.Action("Action", "Controller")"
//url output : @Url.Action("Action", "Controller")
//I get IllegalPath Name error.
내가 이렇게 쓸 때 :
url = "/Controller/Action"
그리고 프로젝트가 하위 폴더 아래에 있으면 스크립트가 작동하지 않습니다. 상대 URL로 다음과 같은 것이 필요합니다.
url = "~/Controller/Action"
내가 어떻게 할 수 있니? 감사.
.js 파일은 asp.net mvc 뷰 엔진에 의해 구문 분석되지 않으므로 거기에 C # 코드를 사용할 수 없습니다. 눈에 띄지 않는 접근 방식을 사용하는 것이 좋습니다.
<div id="loader" data-request-url="@Url.Action("Action", "Controller")"></div>
그리고 자바 스크립트에서는 data-request-url
$(function(){
$('#loader').click(function(){
var url = $(this).data('request-url');
alert(url);
});
});
이것이 가장 우아한 솔루션인지 확실하지 않지만 내가 한 일은 레지스터와 외부 스크립트의 실제 구현을 구별하는 것이 었습니다.
<script>...</script>
... include all the external scripts I need
$(document).ready(function(){
//get all the information you need from your MVC context
//before going out of context and into the scripts
var url = '@Url.Action("Action", "Controller")';
RegisterMyFunction(url, other parameters ..);
RegisterAnotherFunction(url, others...);
}
그래서 내 관점에서는 레지스터 기능 만 있고 스크립트에는 내가 원하는 모든 작업을 수행하는 매개 변수로 특수 값이 포함되어 있습니다.
도움이 되었기를 바랍니다.
여기 제가 사용해온 패턴이 있습니다. 조금 더 많은 단계이지만 모든 URL이 View에서 하나의 조직 된 위치에 있다는 점이 마음에 듭니다.
내 뷰의 맨 아래에 다음과 같은 URL이 포함 된 스크립트 섹션이 포함됩니다.
@section Scripts
{
<script type="text/javascript">
myJavaScriptObject.firstUrl = '@Url.Action("Action1", "Controller", new {id = Model.Id})';
myJavaScriptObject.secondUrl = '@Url.Action("Action2", "Controller", new {id = Model.Id})';
</script>
}
내 JavaScript 클래스 (외부 파일에 있음) 내부에서 URL을 다음과 같이 참조합니다.
var myJavaScriptObject = {
firstUrl: '',
secondUrl: '',
docReady: function() {
$.get(myJavaScriptObject.firstUrl, function(data) { do something... });
}
}
클래스 내에서 항목을 참조 할 필요가 없다는 것을 알고 있지만, 내 관리를 위해 항목을 거기에두고 싶습니다.
설명 된대로 수락 된 답변으로 외부 JS 파일에서 C # 코드를 사용할 수 없습니다. 외부 .js 파일에 몇 개의 컨트롤러 링크를 전달해야하는 경우 일반적으로 수행하는 작업은 다음과 같습니다.
C # (. cshtml)
<script src="~/js/myfile.js"></script>
<script type="text/javascript">
var url1 = "@Url.Action("ActionName", "ControllerName", new { Param = ViewBag.Param })";
var url2 = "@Url.Action("AnotherAction", "AnotherController")";
$(function() {
window.initScript(url1, url2);
});
</script>
myfile.js에서
var _url1;
var _url2;
function initScript(url1, url2) {
_url1 = url1;
_url2 = url2;
// other init. codes...
}
참고 URL : https://stackoverflow.com/questions/13640559/asp-net-mvc-url-action-in-external-js-file
'development' 카테고리의 다른 글
Google Maps API V3의 API 키는 무엇입니까? (0) | 2020.12.10 |
---|---|
Dart를 사용하여 문자열을 숫자로 어떻게 구문 분석합니까? (0) | 2020.12.10 |
사용자 지정 이벤트에서 각도 UI 도구 설명 사용 (0) | 2020.12.10 |
Django : 모델의 목록 필드? (0) | 2020.12.10 |
rspec 실행시 오류 :`require ': 해당 파일을로드 할 수 없음 — rails_helper (LoadError) (0) | 2020.12.10 |