2017-02-05 5 views
0

Я использую 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.

ответ

1

Просто используйте

$locationProvider.html5Mode(true).hashPrefix(''); 

и удалить #

<li><a href="SearchPayment">Search Payment</a></li> 
<li><a href="Flush">Flush</a></li> 

ИЛИ

Просто используйте следующие, так что вы не должны настроить на стороне сервера только для обработки "/"

$locationProvider.html5Mode(false).hashPrefix(''); 

и удалить #

<li><a href="SearchPayment">Search Payment</a></li> 
<li><a href="Flush">Flush</a></li> 
+0

я это сделал. Теперь я не вижу! # В URL-адресе, когда нажимаю на SearchPayment. Однако URL-адрес, отображаемый в браузере, считывает «http: // localhost: 56810/SearchPayment», и я получаю сообщение об ошибке «404 Not Found». ШаблонUrl, указанный для этой ссылки в routeProvider, - «payment/SearchPayment». Почему он не обрабатывается routeProvider? Я что-то упускаю? –

+1

Это дает 404, потому что ваша серверная сторона обрабатывает маршрутизацию, поэтому измените маршрутизацию на стороне сервера, чтобы просто обработать маршрут «/». В NodeJs см. Мой другой ответ для этого. http://stackoverflow.com/questions/42046583/cant-get-route-angular/42046776#42046776 –

+0

Обновлен мой ответ для обоих случаев –

Смежные вопросы