У меня есть приложение angularjs, которое основано на проекте ASP.NET, оно использует html5mode и отлично работает, если только не хочу использовать параметры маршрута.Угловая маршрутизация html5mode ASP.NET
Угловая маршрутизация:
$locationProvider.html5Mode(true);
$routeProvider.when('/accounts', {
templateUrl: 'templates/accounts.html',
controller: 'accountsCtrl',
title: 'Accounts',
resolve: {
accounts: function (accountData) {
return accountData.getAll();
}
}
});
$routeProvider.when('/account/:accId', {
templateUrl: 'templates/editAccount.html',
controller: 'editAccountCtrl',
title: 'Account',
resolve: {
account: function ($route, accountData) {
return accountData.get($route.current.pathParams.accId);
}
}
});
web.config:
<system.webServer>
<rewrite>
<rules>
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^index\.html" ignoreCase="false" />
<action type="None" />
</rule>
<rule name="Imported Rule 2" stopProcessing="true">
<match url="." ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="/index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
Разгром LOCALHOST: 3849/счета - работа, но локальный: 3849/счет/1 перерывы в системе, она выглядит, как это не загружать библиотеки * .js или любые другие ресурсы.
консоль показывает
Uncaught SyntaxError: Unexpected token <
для каждой библиотеки. Что не так? Благодаря
UPDATE Проблема заключалась в том, как сценарии ссылки в index.html. Оригинала был:
<script type="text/javascript" src="Scripts/angular.min.js"></script>
Должен быть:
<script type="text/javascript" src="/Scripts/angular.min.js"></script>
поэтому, когда я спросил сервер для перехода на локальный хост: 3849/счет/1 он начал искать все файлы на локальном хосте: 3849/счета, не нашли их и вернули index.html. Та же проблема в маршрутизации, а
templateUrl: 'templates/editAccount.html',
должны быть:
templateUrl: '/templates/editAccount.html',
Нет меняется, извините – nelly2k
Хм. Эта конфигурация должна работать. Я бы рекомендовал использовать Fiddler для проверки неудавшихся запросов. Вероятно, что правила маршрутизации возвращают файл по умолчанию (html) вместо ваших ресурсов. –
Более внимательно, как ссылаются ваши URL-адреса? Относительный путь изменится и приведет к тому, что ваши .js-файлы будут 404/перенаправлены на index.html, если они не были правильно внедрены. –