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和脚本包含特殊值作为参数来做我想做的任何事情。
希望它有帮助,