【问题标题】:MVC and AngularJS Single Page ApplicationMVC 和 AngularJS 单页应用程序
【发布时间】:2015-10-20 12:11:32
【问题描述】:

我有一个 MVC Razor 应用程序,我刚刚使用 AngularJS 和 Angular UI Router 将它转换为单页应用程序。

我有一个问题,当我转到一个 URL(通过刷新)时,例如 /settings/options MVC 尝试在 Settings 控制器上查找 Options() 方法。一旦页面完成加载,Angular 路由就会接管并显示正确的页面。

因为我的布局页面必须有一个 RenderBody() 调用(否则会引发异常),我最终的页面看起来正确但底部有一个 404 页面。 404 被渲染为RenderBody,因为它在Settings 控制器上找不到Options() 方法

我该如何解决这个问题?我假设使用某种 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 请求也会被重定向

【问题讨论】:

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


    【解决方案1】:

    我觉得this question (How to use ASP.NET MVC and AngularJS routing?) 可能会对您有所帮助。他们使用网站的不同“区域”,但路由的概念相同。

    您还可以查看 IIS 配置的 URL 重写器,并使用它来制定规则以始终将您的 SPA 请求路由到 Angular 应用程序... How do I configure IIS for URL Rewriting an AngularJS application in HTML5 mode?

    【讨论】:

    • 那个链接在我开始的时候也帮助了我!
    • 不幸的是,我的 Web AJAX 处理程序不能很好地放在 /api 或类似的下面 - 真可惜!
    • @Chris 你的 ajax 处理程序在哪里?
    • 不幸的是在我的普通控制器中(视图处理程序曾经所在的位置)。我找到了一个解决方案 atm,其中涉及 Global.asax 中的拦截错误并将没有 Ajax 请求重定向到 Home/Index。长期而言,我想实现您发布的内容 - 将我的 API 调用移至 /API/ 等
    • @Chris 你可以有 2 个 HTTP 重写处理程序......类似于“如果我看到一个带有 /api/ 的 URL”,去掉“/api”部分并抛出请求。 .. 否则,将其发送到角度 SPA 路线"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多