自定义MVC路由将角度http请求URL附加到IE中的当前URL

时间:2016-09-28 21:09:26

标签: angularjs asp.net-mvc internet-explorer asp.net-mvc-routing

我遇到了一些我做过的自定义路由问题。我们有这些处理产品perma-links的自定义路由,我在后台让Angular向服务器请求非perma-links的路由。这工作正常,它将在IE以外的其他所有浏览器中加载其他页面。

在IE中发生的是它从http请求获取相对网址,它只是附加它,例如:

这是永久链接网址,可以很好地加载:

http://localhost:16124/products/7-1-2-contemporary-glass-full-border-award/

当我点击链接以自定义此产品时,这是Angular中的请求:

 var navigateUrl = "Product/Customize/" + this.productId;
        if (product.isCustomizable != true) {
            navigateUrl = "Cart";    
        }
        this.$window.location.href = navigateUrl;

它试图调用的网址是:

http://localhost:16124/products/7-1-2-contemporary-glass-full-border-award/Product/Customize/8036

我在其他浏览器上遇到了类似的问题,如果我使用的是Html.ActionLink,它会为永久链接页面中的任何内容构建url,它会将url作为查询字符串附加,并修复我只是将它们切换为简单的html链接我自己写了完整的相对网址,但我不认为这是问题所在;有谁知道会发生什么?我再次在IE中遇到这个问题。

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了问题是什么,如果你使用location.href,在这种情况下,IE不够聪明,不能在主机名后重做网址,所以它最终只是附加你所拥有的url的结尾,所以将其更改为location.pathname将修复该错误,因为它告诉IE显式重做主机名后的url。