我正在使用 ASP.NET MVC(使用 RouteCollection 类)处理路由。但我的前端是用 Angular 编写的,在某些地方我想使用 Angular 的 $location 更改 url,并且希望它支持 HTML5,所以我将这一行添加到我的 module.config 中:
$locationProvider.html5Mode(true);
但从那时起,我的路由似乎已经由 Angular 处理了。
例如,我的 SPA 位于 mysite.com/user 上,我想使用 Angular 的 $location 更改 url(因此,当用户单击选项卡时,url 会更改为 mysite.com/user/tab 而无需重新加载)。
但是当用户从该页面导航到任何其他页面(例如 mysite.com/other)时,我希望由 ASP.NET MVC 的路由处理。
现在发生的情况是,我的网址更改为 mysite.com/other,但网站无法导航到该页面,即 MVC 路由不处理更改。
编辑
我没有在 Angular 中定义任何路由,我的所有路由都是在服务器端定义的,并且在添加 $locationProvider.html5Mode(true);
最佳答案
不,不幸的是没有。如果您的 Angular SPA 托管在 foo.com
上且启用了 HTML 5 模式,则 foo.com/spaRoute1
将访问您的 ASP.Net 服务器并期望找到该路由(可能是 Controller =SpaRoute1 操作=索引)。
您需要将默认路由设置为始终解析到负责提供 SPA 的 Controller /操作。同时定义您需要的任何其他路线,这些路线不特定于您的 SPA。
关于javascript - Angular $locationProvider 与 ASP.NET MVC 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23413923/