【问题标题】:urls and angularjs with mvc带有 mvc 的 urls 和 angularjs
【发布时间】:2014-10-22 04:10:07
【问题描述】:

直接在浏览器的 URL 栏中输入 URL 时,我的 Angular 路由有问题。

发生的事情是这样的。当我的应用程序加载时,我调用一个 MVC 控制器,该控制器加载一个 MVC 视图,其中包含一个 ng-view。然后这又会加载我的主要角度视图。这很好用。然后我选择一些选项并单击保存,然后将我引导到我的成功视图。 (Angular 很好地处理了这一点)。但是,当我尝试直接转到我的成功视图时,我收到了从服务器返回的 404 错误。

现在我知道这是因为 MVC 中没有一个路由可以为我处理这个问题,但是有一个路由应该重定向到我的主 MVC 索引视图,从而加载我的 Angular 应用程序。

routes.MapRoute(
    name: "Settings",
    url: "{controller}/{*catchall}",
    defaults: new { controller = "Settings", action = "Index" }
);

现在我希望当我刷新一个页面时会调用这个控制器,它应该加载我的角度应用程序,角度路由接管并显示正确的视图,但这根本不会发生。

我的角度路线

parts of the URL omitted

angular.module('app', ['ngRoute', 'restangular']).config([
    '$routeProvider', 'RestangularProvider', '$locationProvider', function ($routeProvider, RestangularProvider, $locationProvider) {
        $locationProvider.html5Mode(true);
        $routeProvider.
            when('/**/**/**/settings', {
                templateUrl: 'App/globalsettings/templates/globalsettings.html',
                controller: 'globalsettingsCtrl'
            }).
            when('/**/**/**/success', {
                templateUrl: 'App/globalsettings/templates/success.html',
            }).
            when('/**/**/**/error', {
                templateUrl: 'App/globalsettings/templates/error.html',
            }).
            otherwise({ redirectTo: '/**/**/**/settings' });

        RestangularProvider.setBaseUrl("api");
    }
]);

任何人都可以回答为什么我在刷新页面或直接输入 URL 时路由失败。

【问题讨论】:

  • 你是不是一直都希望撞到控制器Settings
  • 是的,我愿意。 Settings 是应用程序中唯一用于设置 mini SPA 的 MVC 控制器。我的产品部分还有其他路线,但它们工作正常。

标签: asp.net-mvc angularjs asp.net-mvc-4 angularjs-routing


【解决方案1】:

您的路由仍会从 url 获取控制器。因此,如果您导航到 /success,路由将提取 success 作为控制器名称。

您可以尝试重命名路由中的controller 段,这样控制器将始终获得默认值Settings。例如将路由定义为:

routes.MapRoute(
    name: "Settings",
    url: "{angularController}/{*catchall}",
    defaults: new { controller = "Settings", action = "Index" }
);

您可以将该 url 段重命名为对您更有意义的名称,只要它不被命名为 controller

【讨论】:

    猜你喜欢
    • 2016-12-06
    • 2016-03-10
    • 2015-02-07
    • 1970-01-01
    • 2013-09-04
    • 2015-03-04
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多