【发布时间】: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