Я использую AngularJS в своем приложении MVC. Я столкнулся с очень распространенной проблемой маршрутизации, где в URL-адресах появляется !#
. Я искал решение и нашел это решение почти в каждом принятом ответе, который в моем случае терпит неудачу. Я использовал эту строку кода внутри моего маршрута:Невозможно удалить! # Из угловых маршрутов при использовании ASP.NET MVC
$locationProvider.html5Mode(true).hashPrefix('!');
Эта линия не меняет ничего. Я также попробовал это:
$locationProvider.html5Mode(true);
но не повезло. Кроме того, я использовал этот тег внутри моей <head>
тег:
<base href="/">
Эта линия ничего не меняет, а также.
Моего код маршрутизации и навигация код приведен ниже:
app.config(function ($routeProvider, $locationProvider) {
$routeProvider
.when("/", {
templateUrl: "payment/MakePayment",
controller: "paymentController"
})
.when("/SearchPayment", {
templateUrl: "payment/SearchPayment",
controller: "paymentController"
})
.when("/Flush", {
templateUrl: "payment/InvalidateCacheForIndexAction",
controller: "paymentController"
});
$locationProvider.html5Mode(true).hashPrefix('!');
});
Навигация код-
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/">Make Payment</a></li>
<li><a href="#SearchPayment">Search Payment</a></li>
<li><a href="#Flush">Flush</a></li>
</ul>
</div>
Когда сайт запущен я вижу http://localhost:56810/
в браузере. Когда я нажимаю на ссылку Search Payment
, URL-адрес в браузере читается http://localhost:56810/#!#SearchPayment
. То же самое происходит и для Flush
. Также навигацию не происходит. Это означает, что изменение URL-адресов не обрабатывается с помощью маршрутов routeProvider.
я это сделал. Теперь я не вижу! # В URL-адресе, когда нажимаю на SearchPayment. Однако URL-адрес, отображаемый в браузере, считывает «http: // localhost: 56810/SearchPayment», и я получаю сообщение об ошибке «404 Not Found». ШаблонUrl, указанный для этой ссылки в routeProvider, - «payment/SearchPayment». Почему он не обрабатывается routeProvider? Я что-то упускаю? –
Это дает 404, потому что ваша серверная сторона обрабатывает маршрутизацию, поэтому измените маршрутизацию на стороне сервера, чтобы просто обработать маршрут «/». В NodeJs см. Мой другой ответ для этого. http://stackoverflow.com/questions/42046583/cant-get-route-angular/42046776#42046776 –
Обновлен мой ответ для обоих случаев –