HiddenInput不会旅行

时间:2014-12-23 21:46:27

标签: c# asp.net-mvc attributes hidden-field

我有一张包含这些陈述的表格:

@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进行测试。)

2 个答案:

答案 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...


}