隐藏的剃刀输入的ng模型不起作用

时间:2014-08-06 14:05:57

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

在我的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的隐藏输入无法正常工作的原因是什么?

2 个答案:

答案 0 :(得分:8)

请将值更改为ng_value

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

答案 1 :(得分:2)

以下是如何为隐藏字段指定值。 &#39; V&#39; 值属性的字符必须为大写字母。

<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;
};