我已经回顾了许多使用ASP.NET MVC 5,EF和AngularJS的代码示例。根据代码的年龄,我看过包含共享视图的示例,例如index.cshtml,我也看到了运行index.html的示例。
在我的应用程序中,我需要通过访问令牌将用户身份验证到我们的Web API 2中,并使用第三方社交登录。鉴于需要与ASP.NET Identity交互来处理登录,是否可以抛弃样板ASP.NET共享视图?是否也应删除样板帐户视图?最后,我定义了一个用于主页的WelcomeController,如下所示:
function WelcomeController($scope, $location, authService, ngAuthSettings){
var vm = this;
activate();
function activate() { }
}
我从index.cshtml调用它,如下所示:
<body class="container">
<div data-ng-controller="WelcomeController" id="home">
<div ng-include="~/Scripts/app/appnav.html"></div>
<div class="container">
<div data-ng-view="">
<div ng-include="~/Scripts/app/login.html"></div>
<div ng-include="~/Scripts/app/signup.html"></div>
<div ng-include="~/Scripts/app/welcome.html"></div>
</div>
</div>
</div>
</body>
当我运行application时,在Facebook身份验证后,我的浏览器中会加载一个空白页面,错误说明:
Uncaught Error: [$injector:nomod]
我的app.js文件包含以下内容:
(function () {
'use strict';
var app = angular.module('app', ['ngResource', 'ngRoute', 'app.video','app.applications', 'app.login', 'app.signup']);
app.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/welcome', {
templateUrl: 'app/welcome.html',
controller: 'WelcomeController',
controllerAs: 'vm',
caseInsensitiveMatch: true
});
$routeProvider.when('/applications', {
templateUrl: 'app/applications/application.html',
controller: 'ApplicationsController',
controllerAs: 'vm',
caseInsensitiveMatch: true
});
$routeProvider.when('/video', {
templateUrl: 'app/video/videos.html',
controller: 'VideoController',
controllerAs: 'vm',
caseInsensitiveMatch: true
});
$routeProvider.when('/login', {
controller: 'LoginController',
templateUrl: 'app/login.html'
});
$routProivder.when('/signup', {
controller: 'SignUpController',
templateUrl: 'app/signup.html'
});
$routeProvider.when('/refresh', {
controller: 'RefreshController',
tempalateUrl: 'app/refresh.html'
});
$routeProvider.when('/token', {
controller: 'TokenManagerController',
templateUrl: 'app/token.html'
});
$routeProvider.otherwise({
redirectTo: '/welcome'
});
}]);
app.config(function ($httpProvider) {
$httpProvider.interceptors.push('authInterceptorService');
});
我认为根本原因是Angular IndexController未正确配置或ASP.NET MVC登录代码导致冲突。需要一些关于最佳分辨率的指导,并且非常感谢代码示例。