【问题标题】:Need to send a hidden input value to mvc controller using angularjs需要使用 angularjs 向 mvc 控制器发送隐藏的输入值
【发布时间】:2015-12-14 05:45:51
【问题描述】:

我有一个隐藏的输入字段,其中包含我需要发送我的 mvc 控制器的值。

$http({ method: 'GET', url: '/User/GetProjectsList' })
.success(function (data, status, headers, config) {         
    $scope.workflow = [];
    $scope.Projects = data;
})
.error(function (data, status, headers, config) {
    alert('error');
});

而隐藏字段是:

<input type="hidden" ng-model='ProjectId' value="{{ProjectsObj.IDWorkflow}}"></input>

如何将值发送到我的控制器以及如何在控制器中获取它?这是我在 MVC 控制器上使用的方法。

[HttpPost]
public JsonResult GetProjectsList()
{
    return Json();
}

【问题讨论】:

  • 直接将值附加到角度范围变量,以便您可以在控制器中使用它。
  • 在角度上你不需要隐藏输入..但是为什么呢?因为当您想向 API 控制器发送命令时,我们有控制器可以连接到我们的 API 控制器,您的模型中的模型放置了隐藏的输入值。

标签: c# jquery angularjs model-view-controller


【解决方案1】:

你试过查询字符串吗?

var pID=$scope.ProjectId
$http({ method: 'GET', url: '/User/GetProjectsList?ProjectID='+pID}).
    success(function (data, status, headers, config) {         
        $scope.workflow = [];

        $scope.Projects = data;

    }).
 error(function (data, status, headers, config) {
     alert('error');
 })

;

【讨论】:

    【解决方案2】:

    希望对你有所帮助;)

     app.controller("myCtrl", function($scope) {
       $scope.formDetails = {};
       $scope.sendToApi = function(){
           var model = {
              id: $scope.formDetails.id //this is my hidden input
              name: $scope.formDetails.name,
           }
           //and then send your model to API
       }
    })
    

    【讨论】:

      【解决方案3】:

       @Html.HiddenFor(m =&gt; m.ProjectId)

      您可以通过使用类似上述语法的模型值从视图中简单地将隐藏值传递给控制器​​。

      【讨论】:

        【解决方案4】:

        AngularJS 在提交表单时似乎没有考虑隐藏输入,请查看issue for more details。但您可以通过 2 种方式获得价值:

        1. 经典方式:

        删除 ng-model 因为上面解释的隐藏类型没有 sens 并添加 id:

        <input id="project_id" type="hidden" value="{{ProjectsObj.IDWorkflow}}"/>
        

        在 Javascript 方面,您只需执行以下操作:

        var project_id = document.getElementById('45').value;
        
        1. AngularJS 方式

        由于 Angular 忽略了 hidden 元素,您可以将其替换为 type=text 和 display:none:

        <input type="text" name="project_id" ng-model="projectID" style="display: none;"/>
        

        并且您的 javascript 端使用两种数据绑定方式,您可以访问您的 ng-model 变量:

        var project_id = $scope.projectID;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-03-13
          • 2013-08-18
          • 1970-01-01
          • 1970-01-01
          • 2016-03-12
          • 2013-12-28
          • 1970-01-01
          • 2013-08-29
          相关资源
          最近更新 更多