Javascript 从mvc.net获取用于AngularJS http的URL的可靠方法是什么?
在中使用http时,必须在JavaScript中指定url。我不想硬编码完整的url(例如),因为这意味着实时和测试环境之间的代码更改 我读过一些只使用相对路径的示例(例如/Contoller/GetDetails),但是由于MVC路由的工作方式,这通常无法工作。作为一个简单的示例,可以通过以下方式访问主页: 因此,添加相对路径并不理想,因为三分之二的路由将获得错误的http url 我最初认为我可以通过JavaScript确定基本url并使用:Javascript 从mvc.net获取用于AngularJS http的URL的可靠方法是什么?,javascript,asp.net-mvc,json,angularjs,Javascript,Asp.net Mvc,Json,Angularjs,在中使用http时,必须在JavaScript中指定url。我不想硬编码完整的url(例如),因为这意味着实时和测试环境之间的代码更改 我读过一些只使用相对路径的示例(例如/Contoller/GetDetails),但是由于MVC路由的工作方式,这通常无法工作。作为一个简单的示例,可以通过以下方式访问主页: 因此,添加相对路径并不理想,因为三分之二的路由将获得错误的http url 我最初认为我可以通过JavaScript确定基本url并使用: window.location.proto
window.location.protocol+"//"+window.location.host + "/Contoller/GetDetails"
但我发现,如果MVC应用程序在文件夹中运行,并且无法正确解析url,则此操作将失败,如:
我还考虑使用一种更为RESTful的方法,并将JavaScript所需的所有URL作为json数据的一部分进行处理——但当然,这会导致一种鸡毛蒜皮的情况:如果json中提供了http URL,如何让第一个json调用起作用
在AngularJS对mvc.net的http调用中,获取URL的可靠方法是什么 一种方法似乎是使用.net代码在布局页面中设置JavaScript变量,如下所示: 这允许您使用applicationBaseUrl调用http
$http({
method: 'GET', url: window.applicationBaseUrl + '/Controller/GetDetails'
})
如果您正在使用angular-您需要查看窗口服务-和位置服务-。使用这些工具可以轻松解决相对路径问题。
此外,你称之为MVC应用文件夹的是应用上下文 很好,除了您应该使用角度常量替换window.applicationBaseUrl以实现依赖注入和可测试性:
yourApp.constant('applicationBaseUrl',@Html.Raw(HttpUtility.JavaScriptStringEncode(Url.Content(~/),true))代码>
$http({
method: 'GET', url: window.applicationBaseUrl + '/Controller/GetDetails'
})