2017-05-28 46 views
0

我正在使用AngularJS,我正在尝试将角度值传递给Controller。这就是我的AngularJS脚本文件看起来像:如何将AngluarJS的值传递给MVC控制器

<script> 
    var app = angular.module('myApp', []); 
    app.controller('myCtrl', function ($scope) { 
     { 
      function startTime() { 
       var today = new Date(); 
       var h = today.getHours(); 
       var m = today.getMinutes(); 
       var s = today.getSeconds(); 
       // add a zero in front of numbers<10 
       m = checkTime(m); 
       s = checkTime(s); 
       return (h + ":" + m + ":" + s); 
       t = setTimeout('startTime()', 500); 
      } 
      $scope.name = startTime(); 
     }    
    }); 
</script> 

所以从这一点我可以通过调用$ scope.name得到的时间。但我想将该变量传递给控制器​​。我想这样做的方式是将它作为参数传递给Html.BeginForm,但这不起作用。这是我的BeginForm:

<div ng-app="myApp" ng-controller="myCtrl"> 
    @using (Html.BeginForm("Bob", "Home", new { Time = ng-model="name" }, 
FormMethod.Post, null)) 
    { 

     <p>Name:</p> <input style="color:black;" ng-model="name"> 
     <h1 style="color:black;">You entered: {{name}}</h1> 
     <button type="submit" style="color:black;">Submit</button> 
    } 
</div> 

现在我有输入框那里只是这样我就可以确保它传递正确的价值,它是。但在BeginForm中,它不允许Time等于从AngularJS传递的值。我将如何能够将该值传递给控制器​​?

回答

0

你可以把它作为一个隐藏字段:

@using (Html.BeginForm("Bob", "Home", FormMethod.Post)) 
{ 
    <input name="time" type="hidden" ng-value="name" /> 
    <button type="submit" style="color:black;">Submit</button> 
} 
+0

我欣赏的答案,但我试图做到的是通过NG-值的值回控制器无需输入框。我喜欢你做隐藏领域的想法,但我试图找出如何做到这一点(将ViewBag设置为ng值...但是如何,或者以其他方式)。 – kpschwert