Я использую AngularJS внутри моего приложения ASP.NET MVC, но у меня проблема с вложенными маршрутами. Я использую маршрутизацию ASP.NET MVC, но внутри SPA я использую UI-Router.Маршрутизация ASP.NET MVC и AngularJS
Мой Home/Index
мой AngularJS приложение и <div ui-view>
находится в Index.cshtml
Я хочу мой URL, чтобы быть полностью контролируется моей AngularJS SPA (с html5Mode = истина).
Я настроил мой RouteConfig в ASP.NET MVC, как это:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "DefaultHome",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{.*}",
defaults: new { controller = "Home", action = "Index" }
);
Я использую UI-маршрутизатор, но это не имеет никакого значения, потому что это проблема маршрутизации ASP.NET MVC. Код AngularJS маршрутизации, однако, следующее:
app.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
$urlRouterProvider.otherwise("/");
$stateProvider
.state('home', {
url: "/",
templateUrl: "Scripts/app/partials/home.html",
controller: "HomeController"
})
.state('login', {
url: "/login",
templateUrl: "Scripts/app/partials/login.html",
controller: "AccountController"
})
.state('login.list', {
url: "/list",
templateUrl: "Scripts/app/partials/login.list.html",
controller: "AccountController"
});
$locationProvider.html5Mode(true);
});
Это отлично работает, когда я иду в /
или /login
, но когда я иду к /login/list
я получаю 404 из моего приложения ASP.NET MVC, говоря:
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
В чем проблема? Я указал правило {.*}
, поэтому оно должно быть направлено в приложение AngularJS.
звучит скорее как проблема 'web.config', так как вы хотите, чтобы сервер управлял виртуальными каталогами, а не вашей инфраструктурой MVC. – charlietfl
Что вы имеете в виду? Я хочу, чтобы все указывало на контроллер Home и Action Index, так что мой SPA работает с вложенными маршрутами. – Gaui
, что означает, что вы хотите, чтобы сервер сделал это, а не инфраструктуру mvc. – charlietfl