asp.net-mvc - ASP.NET MVC 和 AngularJS

标签 asp.net-mvc angularjs

我正在使用 AngularJS 1.2.2(并且对它完全陌生)和 MVC 5。我试图调用一个 Controller ,但它不起作用。

据我所知,最合适的“shell”页面是Views/Shared/_Layout.cshtml

因此,在这个页面中我有

<html data-ng-app="myApp">

后来在Views/Shared/_Layout.cshtml我有

<div class="navbar navbar-fixed-top">
                <div class="container">
                    <ul class="nav nav-pills" data-ng-controller="NavbarController">
                        <li data-ng-class="{'active':getClass('/home')}"><a href="#/home">Home</a></li>
                        <li data-ng-class="{'active':getClass('/albums')}"><a href="#/album">Albums</a></li>
                    </ul>
                </div>
            </div>

但是当我单击这两个链接中的任何一个时,我的 getClass 方法不会被调用。正在引用包含此方法的文件。这是它包含的代码

app.controller('NavbarController', function ($scope, $location) {
    $scope.getClass = function(path) {
        if ($location.path().substr(0, path.length) == path) {
            return true;
        } else {
            return false;
        }
    };
});

知道为什么不调用它吗?

编辑

我的结构是这样的:

我的根目录中有一个应用程序文件夹。

在应用程序文件夹中,我有一个包含此代码的 app.js

var app = angular.module('myApp', []);
app.config(function ($routeProvider) {
    $routeProvider
        .when('/Home',
            {
                controller: 'HomeController',
                templateUrl: '/Views/Home/Index.cshtml'
            })
        .when('/Album',
            {
                controller: 'AlbumController',
                templateUrl: '/View/Album/Index.cshtml'
            })
        .otherwise({ redirectTo: '/Home' });
});

(顺便说一句,我猜测通过像这样引用我的个人 cshtml 文件,我会得到正确的行为)。

我有一个包含上述 NavbarController 类的 Controller 文件夹。

我还有一个服务文件夹,其中包含我的服务。

在_Layout文件中我引用了这些js文件

 @Scripts.Render("~/Scripts/angular.js")
    @Scripts.Render("~/Scripts/angular-route.js")

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)

    @Scripts.Render("~/app/app.js")
    @Scripts.Render("~/app/controllers/navbarController.js")
    @Scripts.Render("~/app/controllers/albumController.js")
    @Scripts.Render("~/app/services/albumService.js")

控制台出现错误。这是

Error: [$injector:modulerr] Failed to instantiate module myApp due to: [$injector:unpr] Unknown provider: $routeProvider http://errors.angularjs.org/1.2.2/$injector/unpr?p0=%24routeProvider ...

最佳答案

您似乎错过了将 ngRoute 模块包含在 myApp 的依赖项中。

'use strict';

angular.module('myApp', ['ngRoute']).
    config(['$routeProvider', function($routeProvider) {
    //Your code
}]);

关于asp.net-mvc - ASP.NET MVC 和 AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20730102/

相关文章:

asp.net-mvc - 如何在 asp.net MVC5 上禁用 SSL?

html - <ol> 导出数据时不符合预期

javascript - 带有标签的 ui-router url 参数

javascript - 监听范围内的多个事件

javascript - ASP.NET MVC JQuery Ajax 函数未触发

jquery - 如何在按钮单击事件上调用验证,该事件不是提交类型而是按钮类型并且没有表单?

angularjs - 在前端(混合移动应用程序)使用 ionic/angularjs 并在后端使用 expressjs+passportjs+mongodb 实现 linkedin oauth2

javascript - 使用 AngularJS 进行多服务 http 调用

c# - 如何在asp.net mvc 中获取html 表的值?

c# - 如何将值从 ASP.NET MVC Controller 传递到 MVC View 内的 ASP.NET Webforms 控件?