【问题标题】:ng-model on hidden razor input not working隐藏剃刀输入上的 ng-model 不起作用
【发布时间】:2014-09-29 12:21:36
【问题描述】:

在我的 MVC 5 Razor 视图中,我创建了一个隐藏字段,如下所示:

@Html.HiddenFor(x => x.FormData.UserId,
                new { ng_model = "selectedEmployee.userId" })

当我执行必要的角度操作来填充selectedEmployee.userId 属性时,隐藏输入的值不会被填充。

但是,当我将其更改为

@Html.TextBoxFor(x => x.FormData.UserId,
                 new { ng_model = "selectedEmployee.userId" })

它正在工作,数据已发布到服务器。

<input type="hidden" name="FormData.UserId" value="{{selectedEmployee.userId}}">

正在工作,但是

@Html.HiddenFor(x => x.FormData.UserId,
              new { value = "{{selectedEmployee.userId}}" })

不是。 (这可能与 Razor 覆盖 HTML 值有关)

在 Razor 中,带有 ng-model 的隐藏输入不起作用的原因是什么?

【问题讨论】:

  • 什么不能正常工作?是value=""还是没有渲染值?
  • 尝试使用 ng_value="selectedEmployee.userId" 代替值
  • 当我把隐藏的值发回来时,它是空的。但是当我将它作为文本框发回时,它具有正确的值
  • 谢谢@sylwester,这就是答案。可以在下面加吗?

标签: asp.net-mvc angularjs razor asp.net-mvc-5


【解决方案1】:

请将值改为ng_value

@Html.HiddenFor(x => x.FormData.UserId,
              new { ng_value = "{{selectedEmployee.userId}}" })

【讨论】:

    【解决方案2】:

    这是为隐藏字段分配值的方法。 'V' value 属性的字符必须是大写字母。

    <div data-ng-controller="MyFunction">
        @{Html.BeginForm("SchoolMedium", "BasicSetup", FormMethod.Post, new { });
    
        @Html.HiddenFor(s => s.SchoolMediumId, new { Value = "{{mascotmedium.SchoolMediumId}}" });
    
    
            Html.EndForm();
        }
    

    在控制器中

    $scope.EditWhenAdded= function(row){           
     $scope.mascotmedium = row.entity;
    };
    

    【讨论】:

    • 这对我有用,而不是选择的答案。为简单起见+1 :) (只是为了澄清:选择的答案会更新 ng-value 属性,但该值永远不会发布,因为属性“值”永远不会更新。这个答案虽然不需要控制器端的任何东西)
    猜你喜欢
    • 2019-04-20
    • 2016-11-18
    • 1970-01-01
    • 2018-09-25
    • 2013-05-25
    • 1970-01-01
    • 2016-10-14
    • 2019-01-10
    • 1970-01-01
    相关资源
    最近更新 更多