使用AngularJS时是否应删除ASP.NET登录和共享视图?

时间:2015-12-29 17:41:02

标签: c# angularjs asp.net-mvc entity-framework asp.net-identity

我已经回顾了许多使用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登录代码导致冲突。需要一些关于最佳分辨率的指导,并且非常感谢代码示例。

1 个答案:

答案 0 :(得分:1)

如果你用缩小的Angular替换缩小的Angular,它会说:

enter image description here

这是因为app.js定义angular.module('app', [])中的函数根本没有被调用(就地)(可以在代码中看到)。

还有其他问题:Angular的缩小JavaScript包含有关缩小失败和Angular已包含两次的错误消息。