将信息从Razor客户端(cshtml)传递到AngularJS

use*_*178 5 javascript asp.net-mvc razor asp.net-mvc-4 angularjs

我有以下剃刀文件:

@{
    ViewBag.Title = "Blah";
    Layout = "~/Views/Shared/_Layout.cshtml";
    ViewBag.InitModule = "myFooModule";
}

@section Scripts{
    <script src="~/Scripts/angular-route.js"></script>
    <script src="~/Scripts/angular-route.min.js"></script>
    <script src="~/js/recipes.js"></script>
}
<div data-ng-view
Run Code Online (Sandbox Code Playgroud)

这是我的angularjs代码:

var testModule = angular.module("myFooModule", ['ngRoute']);

appetizerModule.config(["$routeProvider", function ($routeProvider) {
    $routeProvider.when("/", {
        controller: "myController",
        templateUrl: "/Templates/test.html"
    });
    $routeProvider.otherwise({ redirectTo: "/" });
}]);
Run Code Online (Sandbox Code Playgroud)

我想将一个变量与我的剃刀页面中的"myuserinfofromPage"等数据一起传递给我的angularJs,以便我可以使用该数据("myuserinfofromPage")来执行某些操作.因为我是AngularJS的新手,所以我很难找到一种传递数据的简洁方法.将简单数据从Razor(cshtml)传递给我的Angular代码的最佳方法是什么?

pix*_*its 10

您可以在剃刀页面中嵌入以下内容:

 <script>
  app.value('myValue', @Html.Raw(Json.Encode(Model)))
 <script>
Run Code Online (Sandbox Code Playgroud)

其中Model是要呈现的.NET对象.

然后将其注入您的控制器:

 app.controller('ctrl', function($scope, myValue) 
 {
      //use myValue
 });
Run Code Online (Sandbox Code Playgroud)


syl*_*ter 1

您可以将 json 格式的数据传递给您的视图,并在使用工厂引导数据后,即:

testModule.factory('UserService', function () {

      var _userInfo= @Html.Raw(ViewBag.UserDataInJsonFormat); //<- your data is going here

      return {
      userInfo : _userInfo

      }
Run Code Online (Sandbox Code Playgroud)

}