Я использую ASP.NET MVC, IIS 8, и я использую AngularJS для создания SPA. У меня есть только это правило маршрутизации, определенное в моем приложении MVC, который направляет к Index
методе в Home
контроллере, где мой SPA живет:Серверная маршрутизация с помощью AngularJS SPA
routes.MapRoute(
name: "DefaultHome",
url: "",
defaults: new { controller = "Home", action = "Index" }
);
Теперь у меня есть куча на сторону клиента SPA маршрутов, и я хочу, чтобы все они доступный без префикса hashbang #/
. html5Mode работает отлично - но только , когда приложение было загружено. Если я скопирую URL-адрес, закройте окно, откройте окно и вставьте его, я получаю ошибку IIS 404. Это имеет смысл, потому что маршрутизация выполняется на сервере.
Таким образом, совместное использование URL-адреса не работает, что я хотел бы сделать. Таким образом, маршрутизация также должна выполняться на стороне сервера, но каждый раз, когда я изменяю маршрут (добавляю клиентский маршрут), я не хочу создавать правило маршрутизации на стороне сервера.
Это можно сделать в целом? Как что-то, что URL переписывает /*
на #/*
без перенаправления пользователя? Исключение составляет /Static
.
Я не уверен, что это сработает. Если я создаю клиентский маршрут 'http: // server/#/some/cool/route', я хочу, чтобы он был доступен через http: // server/some/cool/route'. Будет ли это так? – Gaui
Странно, когда я попробовал это. Представление загружается дважды, один раз в качестве главной страницы в MVC и один раз в UI-Router's '' –
Gaui