Может ли ngRoute использовать параметр QueryString вместо хеша?

0

Приложение ASP MVC, над которым я работаю, использует проверку подлинности форм с тайм-аутом. Это означает, что когда сеанс истекло, и пользователь нажимает на обновление, они перенаправляются на страницу входа в систему, после чего они возвращаются на исходную страницу без глубокой ссылки на часть URL-адреса на стороне клиента.

Есть ли способ заставить ngRoute основывать свой глубоко связанный URL-адрес клиентской стороны на querystring? Например

http://somesite.com/?p=/home
  • 0
    Нет, но он может использовать реальные URL-адреса, такие как http://somesite.com/home , если вы настроите $ location в режиме HTML5. Почему ты не используешь это? docs.angularjs.org/guide/$location
  • 0
    Спасибо, это было очень полезно!
Теги:
ngroute

1 ответ

0

Первое, что нужно сделать, это заставить сервер ASP MVC захватить любые URL-адреса, которые должны относиться к вашей угловой маршрутизации на стороне клиента и вернуть одностраничный HTML-код приложения. При регистрации маршрутов ASP MVC добавьте следующее правило

        routes.MapRoute(
            name: "Angular",
            url: "x/{*clientPath}",

Если "x/" является базовой частью вашего клиентского приложения, вы можете обойтись без "x" в URL-адресе, если все ваше приложение является одностраничным угловым приложением, и в этом случае вам нужно будет добавить предыдущий чтобы отобразить страницу входа в систему на стороне сервера ASP MVC.

Затем в вашем приложении "Угловое" убедитесь, что вы используете режим Html5, например

app.config(["$locationProvider", "$routeProvider", function ($locationProvider, $routeProvider) {

    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false,
        rewriteLinks: true
    });

    $routeProvider.when("/x/docs/upload", {
        ......
    });
    $routeProvider.when("/x/docs/view", {
        ......
    });
    $routeProvider.otherwise({
        redirectTo: "/x/docs/upload"
    });
}]);

Когда вы открываете браузер и переходите к http://mysite/x/what/ever/you/, как серверная сторона будет использовать XController.Index для рендеринга Views\x\Index.cshtml, который загрузит ваше одностраничное приложение и то ngRoute возьмет на себя и представит соответствующее представление для части "x/what/ever/you/like".

Ещё вопросы

Сообщество Overcoder
Наверх
Меню