Url.Action
是一个 html 辅助方法,它可以在你的 razor 视图中工作,而不是在你的外部 javascript 文件中。
您可以做的是,Url.Action
在剃刀视图中使用辅助方法获取操作方法的相对 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
or Url.RouteUrl
html 辅助方法来构建操作方法的相对 url。无论您当前的页面/路径如何,它都会正确构建 url。
如果你想在你的角度控制器/数据服务等中做同样的事情,看看这篇文章,它解释了如何使用角度值提供者来做同样的事情。