将数据从Controller传递到View而不更改Route

时间:2016-01-04 20:56:31

标签: angularjs asp.net-mvc

说我有几个控制器,包括一个BaseControlelr,我想做一些查询并将数据发送到我的Index.cshtml,但我没有更改网址,因为这是一个单页面的应用程序。通常我会为我的Get请求定义一个Route并使用Angular $http.get检索它,但还有其他方法可以将模型直接从我的控制器传递到我的视图吗?

1 个答案:

答案 0 :(得分:1)

  

但有没有其他方法可以直接从我的模型传递模型   控制器到我看来?

当然有。在ASP.NET MVC中,控制器操作可以将视图模型返回到强类型视图:

public ActionResult Index()
{
    MyViewModel model = ...
    return View(model);
}

并且在强类型视图中,您可以将此视图模型序列化为Angular应用程序可用的Angular constant

@model MyViewModel
<script>
    angular.module('myApp').constant('model', @Html.Raw(Json.Encode(Model)));
</script>

现在,在Angular应用程序中,您可以使用此model变量:

angular.module('myApp').controller('MainCtrl', ['$scope', 'model', function($scope, model) {
    $scope.model = model;
}]);

并在相应的模板中:

<div ng-controller="MainCtrl">
    Hello {{FirstName}} {{LastName}}
</div>

这当然是SPA的初始引导。从那以后,您可能需要使用纯客户端技术来处理模型。