我使用ASP.NET MVC 5创建了一个网站。在这个网站中,我使用AngularJS创建了一个“小型SPA”。 要获取/发布数据,我使用Web API(默认路由)。我使用子文件夹托管我的网站,因此我的网址看起来像 www.mydomain.com/MyApp.Web / 。当我尝试为资源服务创建URL时,我使用像“/ api / controllerName”这样的字符串,但当angular获取/发布到服务器时,它会省略子文件夹(MyApp。 Web)在URL中,实际上它获取/发布到URL,如 www.mydomain.com/api/controllerName 。 如何在URL中创建angular include子文件夹?
答案 0 :(得分:2)
与达林的答案相似...... 在index.html文件中声明全局变量:
<script>
var rootUrl = '@Url.Content("~/")';
</script>
然后创建一个服务,它将成为标准$ http的包装器。这个包装器在使用时可以检查传递的url是否以“〜”开头(例如你熟悉.NET),并通过组合传递的url和rootUrl来构造完整的url。
答案 1 :(得分:1)
如何在URL中创建angular include子文件夹?
永远不会硬编码应用程序中的url,而是使用服务器端url helper来生成它:
<script type="text/javascript">
var url = '@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "controllerName" })';
$.post(url, { foo: 'bar' }, function(result) {
...
});
</script>
或者,您可以使用此帮助程序,以便在SPA的某些DOM元素中嵌入正确的URL。假设您是AJAX化锚。您只需在服务器上生成正确的URL:
<a href="@Url.RouteUrl("DefaultApi", new { httproute = "", controller = "controllerName" })" id="mylink">Click me</a>
然后在你单独的js文件中:
$('#mylink').click(function() {
$.post(this.href, { foo: 'bar' }, function(result) {
...
});
return false;
});
注意网址永远不会在任何地方进行硬编码。它保证是正确的,因为它是由服务器端url帮助程序生成的,考虑到您的路由配置和任何可能的虚拟目录。