MVC和AngularJS单页面应用程序

时间:2015-10-20 12:11:33

标签: angularjs razor asp.net-mvc-5 angular-ui-router

我有一个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请求也会被重定向

1 个答案:

答案 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?