我有一个MVC Razor应用程序,我刚刚使用AngularJS和Angular UI路由器转换为单页应用程序。
我遇到一个问题,当我转到URL(通过刷新),例如/settings/options
时,MVC会尝试在Options()
控制器上查找Settings
方法。页面加载完成后,Angular路由将接管并显示正确的页面。
因为我的布局页面要进行RenderBody()
调用(否则会抛出异常),最终我的页面看起来正确,但底部有404页面。 404将呈现为RenderBody
,因为它无法在Options()
控制器上找到Settings
方法
我该如何解决这个问题?我假设使用某种MVC路由但不知道从哪里开始。这是我目前的路线
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
}
This question有一个类似的问题,除了他们使用WebAPI并且我的端点在普通控制器中。如果我在这里使用解决方案,我的所有AJAX请求也会被重定向
答案 0 :(得分:1)
我觉得this question (How to use ASP.NET MVC and AngularJS routing?)可能会帮到你。他们使用网站的不同“区域”,但它与路由的概念相同。
您还可以查看IIS重写器的IIS配置,并使用它来制定规则以始终将您的SPA请求路由到角度应用程序... How do I configure IIS for URL Rewriting an AngularJS application in HTML5 mode?