如何在@ URL.Action()中訪問javascript變量


Answers

我做了一些非常相似的事情,但不太詳細:

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

我們可以這樣做是因為路由,並且最終Url.Action和路由字典參數轉換成如下的URI:

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

只是第二選擇,因為正如一位聰明的老人曾經說過的那樣:“這是我們的選擇,哈利,這顯示了我們的真實性,遠遠超過我們的能力。”

Question

我如何訪問@URL.Action() JavaScript值? 就像是:

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

}
</script>



您可以用這種方式在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 });
}



您可以用下面的代碼替換網址

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