如何访问@ URL.Action()中的javascript变量

Bol*_*olu 72 javascript asp.net-mvc razor asp.net-mvc-3

如何在里面访问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>
Run Code Online (Sandbox Code Playgroud)

Bri*_*ins 133

你不能.生成操作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 });
}
Run Code Online (Sandbox Code Playgroud)

HTH.

  • 有没有更清洁的解决方案? (2认同)

noc*_*ier 14

我做了一些非常相似的事情,但不那么冗长:

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

我们可以这样做是因为路由,最终Url.Action与路由字典参数转换为如下所示的URI:

http://localhost:41215/Partner/Solution?myJavascriptID=7
Run Code Online (Sandbox Code Playgroud)

只是第二个选择,因为作为一个聪明的老人曾经说过"这是我们的选择,哈利,这表明我们真正的东西,远远超过我们的能力."


小智 10

您可以将变量传递给任何链接,如下所示......

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