我有一张包含这些陈述的表格:
@Html.HiddenFor(model => model.CompanyId)
@Html.HiddenFor(model => model.OriginalDailyTimeOption)
@Html.HiddenFor(model => model.OriginalWorkWeekStartDay)
当我查看源代码时,我在表单元素中看到这些元素,当我提交表单时,这些属性都被正确返回。
现在,我读到了在我的viewmodel中使用[HiddenInput]
,所以我尝试了这个:
[HiddenInput(DisplayValue = true)]
public int CompanyId { get; set; }
// Original values
[HiddenInput(DisplayValue = true)]
public DayOfWeek OriginalWorkWeekStartDay { get; set; }
[HiddenInput(DisplayValue = true)]
public bool OriginalDailyTimeOption { get; set; }
我删除了之前的@Html
语句。
现在,当我查看源代码时,我看不到表单中的元素,当我提交表单时,值不会显示在控制器操作中。我还没有HiddenInput
尝试了(DisplayValue = true)
属性,但我得到了相同的结果。我也试过DisplayValue = false。
我的HiddenInput属性有问题吗? (为了记录,我正在使用IE 11进行测试。)
答案 0 :(得分:1)
当我搜索“Html.HiddenFor& HiddenInput属性之间的差异”时,我在另一篇文章(podiluska)中发现了这一点:
“HiddenInput是(视图)模型中某个字段的属性 - 这意味着它可以在多个视图中使用,并指示该字段应该隐藏在EditorFor帮助器呈现的任何位置。”
HiddenInputAttribute上的MSDN页面没有提及EditorFor,所以这就是我所缺少的。
答案 1 :(得分:0)
加入[HttpPost]同时确保隐藏的形式
[HttpPost]
public ActionResult action(Model model)
{
Model _model = new Model();
_model.CompanyId = model.CompanyId;
etc...
}