解决方法
javascript是一种客户端语言,不了解您正在使用的服务器端的语言.因此,在使用服务器端路由定义生成URL的服务器端帮助程序的javascript中没有等价物是正常现象.
它不是很清楚你正在尝试实现,但如果你想使用通过javascript调用一些url可以使用服务器端帮助器生成这个url:
<script type="text/javascript"> var url = '@Url.Action("SomeAction","SomeController")'; // do something with the url client side variable,for example redirect window.location.href = url; </script>
如果你想在一个单独的javascript文件中使用这个url,你无法访问服务器端的帮助者,你仍然可以根据情况把这个URL包含在一些DOM元素中.
例如:
<div id="foo" data-url="@Url.Action("SomeAction","SomeController")">Click me</div>
请注意我们嵌入到DOM中的数据网址HTML5属性,并使用服务器端帮助器,以确保生成的网址将始终根据路由定义正确.现在我们可以在一个单独的JavaScript文件中,不引人注目的订阅此div的点击事件并检索url:
$('#foo').click(function() { var url = $(this).data('url'); // do something with the url client side variable,for example redirect window.location.href = url; });
其他实例显然包括标准< a>和< form>应该使用服务器端HTML助手生成的元素,然后您在单独的JavaScript文件中必须执行的所有操作都是获取其相应的href或action属性来检索实际的url并使用它执行某些操作.