我们正在使用ASP.NET MVC框架中的AngularJS创建SPA技术,当从VS2013运行时,页面之间的AngularJS路由工作正常,但是将应用程序托管到IIS7.5路由后无法正常工作,
路由脚本:
var appRoot = angular.module('main', ['ngRoute', 'ngGrid', 'ngResource']); //Define the main module appRoot .config(['$routeProvider', function ($routeProvider) { //Setup routes to load partial templates from server. TemplateUrl is the location for the server view (Razor .cshtml view) $routeProvider .when('/home', { templateUrl: '/home/main', controller: 'HomeController' }) .otherwise({ redirectTo: '/home' }); }]) .controller('RootController', ['$scope', '$route', '$routeParams', '$location', function ($scope, $route, $routeParams, $location) { $scope.$on('$routeChangeSuccess', function (e, current, previous) { $scope.activeViewPath = $location.path(); }); }]);
Index.html:
<li class="mt" data-ng-class="{active : activeViewPath==='/home'}"> <a href='#/home'> <i class="fa fa-dashboard"></i> <span>Dashboard Home</span> </a> </li> <div class="col-lg-9 main-chart" ng-view=""> </div>
项目结构:
在IIS上运行时会收到任何JS错误吗?
您在使用捆绑软件吗?如果是这样的检查,如果这个问题是因为缩小/包创建的添加 BundleTable.EnableOptimizations = true; 在RegisterBundles方法和VS.再次尝试
BundleTable.EnableOptimizations = true;
RegisterBundles
否则,我建议您在本地IIS上运行(右键单击项目的选项卡“ Web”,“服务器”部分),然后查看其是否正常运行。
根据您的路由,您应该<base href="@Url.Content("~/")" />在模板头中,并使用$locationProvider.html5Mode(true);路由配置从网址中删除“#” 。
<base href="@Url.Content("~/")" />
$locationProvider.html5Mode(true);
如果以上方法均无用,请在请求中添加更多详细信息。
祝你今天愉快,
阿尔贝托