我有一些在MVC项目中引用/jobs/GetIndex的javascript。当我在本地运行它时,这是很好的,因为我有一个名为Controller的JobsController。当我部署它时,我将应用程序部署到一个'Jobs‘子文件夹中,这意味着这个URL应该变成http://site/jobs/jobs/GetIndex,但是它将变成http://site/jobs/GetIndex,我想是因为javascript不知道’根URL‘是什么,并且使用这个站点作为根。如何让它在这两种环境中工作?
发布于 2015-12-18 17:43:50
如果您只关心获取站点的根/基url,那么您可以附加它以获得您所要查找的其他url,您可以使用/作为您的url的第一个字符。
var urlToJobIndex2= "/jobs/GetIndex";如果您想要的不仅仅是应用根目录(Ex :特定的urls(使用mvc帮助方法(如等)构建),这里是另一种方法。
您可以在您的剃刀视图中使用Url.Content助手方法来生成应用程序库的url,将它分配给javascript变量,并在其他js代码中使用它来构建您的其他url。始终确保在使用javascript名称空间时避免全局javascript变量可能出现的问题.
如果要获取特定操作方法的url,可以使用Url.Action或Url.RouteUrl助手方法。
因此,在您的剃须刀视图(_Layout文件或特定的vie_w)中,您可以这样做。
<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";Here是一个大致相同的详细答案,但在特定的页面/视图中使用此方法
角Js
您可能需要在您的角控制器/服务/ directives.The中使用正确的相对url,同样的方法也适用于您的角代码。只需构建js命名空间对象,并使用角value提供程序将数据传递给您的角控制器/服务/指令,如示例代码详细解释的in this post。
https://stackoverflow.com/questions/34360537
复制相似问题