小编典典

如何让JS了解应用程序根目录?

javascript

/jobs/GetIndex在MVC项目中引用了一些JavaScript
。当我在本地运行它时,此方法效果很好,因为我有一个Controller被调用的JobsController。当我部署它时,我将应用程序部署到“
Jobs”子文件夹中,这意味着该URL应该变成了,http://site/jobs/jobs/GetIndex但它要去到http://site/jobs/GetIndex,我想这是因为javascript不知道“根URL”是什么,并使用该站点作为根。如何使它在两种环境中都能正常工作?


阅读 313

收藏
2020-04-25

共1个答案

小编典典

如果您只是在乎获取站点的根目录/基础URL,那么可以附加该URL以获取您要查找的其他URL,您可以将其/用作该URL的第一个字符。

var urlToJobIndex2= "/jobs/GetIndex";

*如果您不仅需要应用程序的根目录, *这是一种替代方法 (例如:特定的urls(使用mvc辅助方法等构建Url.RouteUrl

您可以Url.Content在razor视图中使用helper方法来生成应用库的url,将其分配给javascript变量,然后在其他js代码中使用它来构建其他url。
一定要确保使用javascript命名空间,以避免全局javascript变量可能出现的问题。

如果要获取特定操作方法的URL,可以使用Url.ActionUrl.RouteUrl帮助方法。

因此,可以在剃刀视图( 布局文件或特定 视图)中执行此操作。

<script>
    var myApp = myApp || {};  
    myApp.Urls = myApp.Urls || {};
    myApp.Urls.baseUrl = '@Url.Content("~")';
    myApp.Urls.jobIndexUrl= '@Url.Action("GetIndex","jobs")';
</script>
<script src="~/Scripts/PageSpecificExternalJsFile.js"></script>

PageSpecificExternalJsFile.js文件中,您可以像

var urlToJobIndex= myApp.Urls.jobIndexUrl;
// Or With the base url, you may safely add the remaining url route.
var urlToJobIndex2= myApp.Urls.baseUrl+"jobs/GetIndex";

是有关的详细答案,但是在特定页面/视图中使用它

角Js

您的角度控制器/服务/指令中可能需要正确的相对URL,同样的方法也适用于您的角度代码。只需构建js名称空间对象并使用angular
value提供程序即可将数据传递到您的angular控制器/服务/指令,如本文中通过示例代码详细说明的那样。

2020-04-25