Я хочу обслуживать свой AngularJS SPA из «/», и по этой причине я отключил маршрут по умолчанию и использую
// this action does not 'fire' due to Angular's routing...
routes.MapRoute(
name: "Test",
url: "Test",
defaults: new { controller = "Home", action = "Test" },
namespaces: new[] { "My.WebApp.Controllers" }
);
// Index view has no layout and contains Angular SPA
routes.MapRoute(
name: "AngularJs-SPA",
url: "{*catchall}",
defaults: new { controller = "Home", action = "Index" },
namespaces: new[] { "My.WebApp.Controllers" }
);
Я также использую следующий блок конфигурации приложения angular
.config(['$routeProvider', '$httpProvider', '$locationProvider', function ($routeProvider, $httpProvider, $locationProvider) {
$routeProvider.otherwise({ redirectTo: '/404' });
$httpProvider.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
$locationProvider.html5Mode(true);
}])
Мой вопрос: могу ли я каким-то образом иметь обычную боковую страницу сервера, которая отвечает на действие MVC (в данном случае /Home/Test)? Проблема, которую я вижу, заключается в том, что Angular берет на себя маршрутизацию, и даже если я определяю дополнительный маршрут (до или после углового маршрута), Angular видит его как «иначе» маршрут...
Несколько (нежелательных) решений
- укажите маршруты каждого углового приложения в MVC вместо {*catchall}
- переместить angular spa в действие без полномочий root (например, /app)