Я новичок в angularjs, и я делаю веб-сайт с использованием ASP.NET MVC и AngularJs.I использовал angularjs ui router для маршрута с одной страницы на другую.
С тегом ui-sref все в порядке, но когда пользователь обновляет страницу браузера или вводит URL-адрес, он не соответствует состоянию.
Вопрос в том, как устанавливать состояния и какие действия необходимы в моих контроллерах. вот мои коды. Если мне нужен другой код.
мой контроллерошибка при обновлении страницы angularjs ui router
public ActionResult Index()
{
return View();
}
public ActionResult NewsListPage()
{
return Redirect("#NewsListPage");
}
public ActionResult NewsDetailPage(int? newsId)
{
return Redirect("#NewsDetailPage");
}
мой основной угловой файл, включая создание модуля и конфигурации
var app = angular.module('abtinApp', ['ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider',
function ($stateProvider, $urlRouterProvider, $locationProvider) {
$stateProvider
.state('A',
{
url: '/News/NewsListPage',
templateUrl: '/Angular/NewsListPage'
})
.state('B',
{
url: '/News/NewsDetailPage/:newsId',
templateUrl: '/Angular/NewsDetailPage'
})
.state('C',
{
url: '^/News/NewsDetailPage/:newsId',
templateUrl: '/Angular/NewsDetailPage'
});
$urlRouterProvider.otherwise('/News/NewsListPage');
$locationProvider.html5Mode({ enabled: true, requireBase: false });
}
]);
мой index.cshtml
...
<div ng-app="abtinApp">
<a ui-sref=".A">Main</a>
<a ui-sref=".B">Detail</a>
<div ui-view></div>
</div>
...
угловой контроллер
public ActionResult NewsDetailPage()
{
return View();
}
public ActionResult NewsListPage()
{
return View();
}
и NewsDetailPage.cshtml
<div ng-controller="NewsDetailController">
<h3>Details</h3>
<h3>{{newsId}}</h3>
</div>
и NewsListPage.cshtml
<h3>News</h3>
<div ng-controller="NewsController">
<div ng-repeat="newsItem in newsToShow">
<h3>
<a ui-sref="B({newsId: '{{newsItem.Id}}'})"> {{newsItem.Title}}</a>
</h3>
<p>
{{newsItem.NewsSummary}}
</p>
</div>
</div>
нет ничего особенного в моих угловых контроллерах. спасибо.
https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode. В частности, либо IIS переписывает в web.config, либо перезаписывает C# в Global.asax. – Claies
также вы должны знать об осложнениях использования 'requireBase: false'; Без тега ' ' первоначальный URL-адрес должен соответствовать точно в каждом экземпляре, создавая относительные URL-адреса относительно * сервера *, а не по отношению к другим страницам приложения. –
Claies
@Claies: вы имеете в виду, что я копирую код C# в моем golbal.asax? –