我/jobs/GetIndex在MVC项目中引用了一些JavaScript 。当我在本地运行它时,此方法效果很好,因为我有一个Controller被调用的JobsController。当我部署它时,我将应用程序部署到“ Jobs”子文件夹中,这意味着该URL应该变成了,http://site/jobs/jobs/GetIndex但它要去到http://site/jobs/GetIndex,我想这是因为javascript不知道“根URL”是什么,并使用该站点作为根。如何使它在两种环境中都能正常工作?
/jobs/GetIndex
Controller
JobsController
http://site/jobs/jobs/GetIndex
http://site/jobs/GetIndex
如果您只是在乎获取站点的根目录/基础URL,那么可以附加该URL以获取您要查找的其他URL,您可以将其/用作该URL的第一个字符。
/
var urlToJobIndex2= "/jobs/GetIndex";
*如果您不仅需要应用程序的根目录, *这是一种替代方法 (例如:特定的urls(使用mvc辅助方法等构建Url.RouteUrl)
Url.RouteUrl
您可以Url.Content在razor视图中使用helper方法来生成应用库的url,将其分配给javascript变量,然后在其他js代码中使用它来构建其他url。 一定要确保使用javascript命名空间,以避免全局javascript变量可能出现的问题。
Url.Content
如果要获取特定操作方法的URL,可以使用Url.Action 或Url.RouteUrl帮助方法。
Url.Action
因此,可以在剃刀视图( 布局文件或特定 视图)中执行此操作。
<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文件中,您可以像
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控制器/服务/指令,如本文中通过示例代码详细说明的那样。
value