我正在使用 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 的路由处理。
现在发生的情况是,我的 url 更改为 mysite.com/other,但网站无法导航到该页面,即 MVC 路由不处理更改。
EDIT
我没有在 Angular 中定义任何路由,我的所有路由都是在服务器端定义的,并且服务器端路由在我添加后就停止工作了$locationProvider.html5Mode(true);
不,不幸的是没有。如果您的 Angular SPA 托管在foo.com
HTML 5 模式开启时,foo.com/spaRoute1
将访问您的 ASP.Net 服务器并期望找到该路由(可能是controller=SpaRoute1 action=Index)。
您需要将默认路由设置为始终解析到负责提供 SPA 的控制器/操作。同时定义您需要的任何其他路线,这些路线不特定于您的 SPA。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)