ngRoute控制器在ASP.NET MVC中构成局部视图

时间:2016-05-10 15:55:18

标签: c# asp.net angularjs asp.net-mvc asp.net-mvc-4

在整个应用程序中设置ngRoute会产生问题。许多视图中使用的控制器依赖于从ASP.NET控制器中的数据库中获取的脚本。这是一个例子:

Angular App

var app = angular.module("app", ["ngRoute"])
    .config(["$routeProvider", "$locationProvider", function($routeProvider, $locationProvider) {
        $routeProvider
            .when("/Template/:id", {
                templateUrl: function(arg) { return "/User/Template/Details/" + arg.id },
                controller: "FormController"
            });                
        $locationProvider.html5Mode(false).hashPrefix("!");
    }]);

Razor查看Details.cshtml:

@{
    Layout = null;
}
<head>
    <script type="text/javascript">
        alert('triggered');
        angular.module("app").controller("FormController", ["$scope", function ($scope) {
            alert("not triggered");
            $scope.xyz = 1;
        }]);
    </script>
</head>
<div id="template-details" class="col-xs-12" ng-controller="FormController" ng-cloak>
    <span>{{xyz}}</span>
</div>

它加载视图就好了,除了它不启动控制器(使用ViewBag代码)。脚本块执行得很好(使用第一个alert()测试)。

1 个答案:

答案 0 :(得分:0)

当你得到controller is undefined时,要记住几件事:

  1. 在致电Angular App脚本
  2. 之前,请确保已加载FormController
  3. 确保您的FormController div位于ng-app="app" div
  4. 确保您在ng-route之后加载angular
  5. 我已根据您提供的内容创建了JsFiddle,但效果很好。