developer tip

@ URL.Action () 내에서 자바 스크립트 변수에 액세스하는 방법

copycodes 2020. 10. 26. 08:06
반응형

@ URL.Action () 내에서 자바 스크립트 변수에 액세스하는 방법


내부에서 JavaScript 값에 어떻게 액세스 할 수 @URL.Action()있습니까? 같은 것 :

<script type="text/javascript">
function name(myjavascriptID)
{
     jQuery("#list_d").jqGrid('setGridParam', { url: '@URL.Action("download file", "download", new { id = <myjavascriptID> })', page: 1 });

}
</script>

당신은 할 수 없습니다. 작업 URL을 생성 할 때 JavaScript가 실행되지 않습니다. 할 수있는 일은 다음과 같이하는 것입니다.

function name(myjavascriptID)    {
     var link = '@Url.Action("download file", "download", new { id = "-1" })';
     link = link.replace("-1", myjavascriptID);

     jQuery("#list_d").jqGrid('setGridParam', { url: link, page: 1 });
}

HTH.


나는 상당히 비슷하지만 덜 장황한 일을한다.

var myUrl = '@Url.Action("Solution","Partner")/' + myjavascriptID;
$.ajax.load(myUrl); // or whatever

라우팅으로 인해이 작업을 수행 할 수 있으며 궁극적으로 경로 사전 매개 변수가있는 Url.Action은 다음과 같은 URI로 변환됩니다.

http://localhost:41215/Partner/Solution?myJavascriptID=7

두 번째 선택입니다. 현명한 노인이 한때 "우리가 진정 무엇인지 보여주는 것은 우리의 능력보다 훨씬 더 많은 우리의 선택입니다."


아래와 같이 모든 링크에 변수를 전달할 수 있습니다.

var url = '@Html.Raw(@Url.Action("MethodName", "ControllerName"))' + '?id = ' + myjavascriptID

다음과 같은 방법으로 C #에서 JavaScript 코드를 빌드 할 수 있습니다.

function fun(jsId) {
  var aTag = '<a href="@Html.Raw(@Url.Action("ActionName", "ControllerName", new { objectId = "xxx01xxx" }).Replace("xxx01xxx", "' + jsId + '"))">LINK</a>';
}

다음은이 기술을 사용하여 다시 작성된 질문의 코드입니다.

function name(myjavascriptID) {
  jQuery("#list_d").jqGrid('setGridParam', { url: '@Html.Raw(@URL.Action("download file", "download", new { id = "XXXmyjavascriptIDXXX" }).Replace("XXXmyjavascriptIDXXX", "' + myjavascriptID + '"))', page: 1 });
}

Brian Mains의 대답과 같은 맥락에서 -1을 변수로 바꾸는 대신 URL 문자열을 형식화 할 수 있습니다. 즉, 저처럼 읽는 것이 더 낫다고 판단 할 수 있습니다. 다음 답변은 이 답변String 에서 제안한대로의 프로토 타입을 수정했다고 가정합니다 .

var url = unescape('@Url.Action("download file", "download", new { id = "{0}" })').format(myjavascriptID);

unescape당신이 당신을 디코딩 할 경우 호출이 필요합니다 {0}. JS 변수에서 여러 매개 변수를 더 쉽게 가질 수 있기 때문에이 대안을 좋아합니다. 예를 들면 :

var url = unescape('@Html.Raw(Url.Action("Action", "Controller", new { id = "{0}", name = "{1}" }))').format(myID, myName);

URL 문자열에 포함 Html.Raw되지 않도록 두 번째 예제에 추가 했습니다 &amp.


아래 코드와 같이 URL을 바꿀 수 있습니다.

var jsUrl = '@Url.Action("action", "controller")'; // ## is the token
var getUrl = jsUrl.replace('action', action).replace('controller', controller)  
$("#RenderPartial").load(getUrl); 

참고 URL : https://stackoverflow.com/questions/6456703/how-to-access-javascript-variable-within-url-action

반응형