Url.Action是html辅助方法,将在您的剃刀视图中工作,而不在外部javascript文件中工作。
您可以做的是,
Url.Action在剃刀视图中使用helper方法获取操作方法的相对URL,并将其设置为javascript变量,然后在外部js文件中使用。执行此操作时,请
务必确保使用javascript名称间隔 以避免与现有全局变量发生冲突。
您可以将此代码添加到 __Layout.cshtml中_
<script type="text/javascript"> var yourApp = yourApp || {}; yourApp.Urls = yourApp.Urls || {}; yourApp.Urls.baseUrl = '@Url.Content("~")'; yourApp.Urls.editUserUrl= '@Url.Action("Edit","User")';</script>或者在您的页面特定视图中,
@section scripts{ <script type="text/javascript"> var yourApp = yourApp || {}; yourApp.Urls = yourApp.Urls || {}; yourApp.Urls.baseUrl = '@Url.Content("~")'; yourApp.Urls.editUserUrl= '@Url.Action("Edit","User")'; </script> <script src="~/scripts/PageSpecificExternalJsFile.js"></script> }现在,在您的外部javascript文件中,您可以像这样访问它
var urlToEditUser = yourApp.Urls.editUserUrl;//you can use urlToEditUser now// Or With the base url, you may safely add the remaining part of your url.var urlToEditUser2 = yourApp.Urls.baseUrl+"User/Edit";//you can use urlToEditUser2 now
始终使用
Url.Action或
Url.RouteUrlhtml
helper方法来构建操作方法的相对URL。无论您当前的页面/路径如何,它都会正确构建网址。



