Я пишу одностраничное приложение с angular2 и MVC5. Однако я новичок в обоих, и у меня проблемы с маршрутизацией.
Я хотел бы сопоставить URL-адреса как:
/
-> перейти на мою индексную страницу, которая загружает angular/api/{controller}/{id?}
-> REST API/{*anythingelse}
-> если там есть файл, вернуть его как статическое содержимое; в противном случае, если angular может его направить, используйте угловой маршрут; в противном случае вернуть 404.
Второй пункт достаточно прост, и я могу заставить маршрутизацию на стороне клиента работать, если я готов отказаться от возврата 404, но я не могу согласовать все это.
Кажется, это должно работать:
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "api",
template: "api/{controller}/{id?}");
routes.MapRoute(
name: "spa",
template: "{*anythingelse}",
defaults: new { controller = "Home", action = "Index" });
});
и:
@RouteConfig([
{ path: "/", name: 'Splash', component: SplashView },
{ path: '/accounts/login', name: 'Login', component: LoginView },
{ path: '/accounts/register', name: 'Registration', component: RegistrationView },
{ path: '/home/...', name: 'Home', component: HomeView },
])
Но это просто обслуживает Index.cshtml для каждого запроса, который не является статическим файлом.
Я чувствую, что это уже должна быть решенная проблема, но я не смог найти ничего об этом в Интернете. Как это сделать правильно?
Я использую пути в стиле «HTML5», а не в стиле хэш.
defaults: new { action = "Index" }
или действие в URL-адресеapi/{controller}/{action}/{id?}
. - person NightOwl888   schedule 22.02.2016