Asp.Net Mvc Url.Action在外部js文件?

在外部的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视图引擎parsing,所以你根本就不能在那里使用任何c#代码。 我会build议使用不显眼的方法,就像这样

 <div id="loader" data-request-url="@Url.Action("Action", "Controller")"></div> 

在JavaScript中,使用data-request-url

 $(function(){ $('#loader').click(function(){ var url = $(this).data('request-url'); alert(url); }); }); 

我不确定这是否是最优雅的解决scheme,但我所做的是区分寄存器和外部脚本中的实际实现,以便:

 <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...); } 

所以在我看来,我只有寄存器的function和脚本包含特殊值作为参数来做我想做的任何事情。

希望它有帮助,