C# HiddenInput不';t旅行

C# HiddenInput不';t旅行,c#,asp.net-mvc,attributes,hidden-field,C#,Asp.net Mvc,Attributes,Hidden Field,我有一个表格,上面有这些声明: @Html.HiddenFor(model => model.CompanyId) @Html.HiddenFor(model => model.OriginalDailyTimeOption) @Html.HiddenFor(model => model.OriginalWorkWeekStartDay) 当我查看源代码时,我会在表单元素中看到这些元素,当我提交表单时,这些属性都会正确返回 现在,我阅读了有关在我的viewmodel中使用[H

我有一个表格,上面有这些声明:

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

包括一个[HttpPost],还要确保hiddenfor的格式是您的

[HttpPost]
public ActionResult action(Model model)
{
     Model _model = new Model();
     _model.CompanyId = model.CompanyId;
    etc...


}

当我搜索“Html.HiddenFor和HiddenInput属性之间的差异”时,我在另一篇帖子(由podiluska撰写)中发现了这一点:

“HiddenInput是(视图)模型中某个字段的一个属性-这意味着它可以在多个视图中使用,并指示此字段应该隐藏在EditorFor帮助器呈现的任何位置。”


HiddenInputAttribute上的MSDN页面没有提到EditorFor,因此我缺少了它。

问题是,如果我使用HiddenInput属性,为什么我必须在表单中使用HiddenFor?(而且,作为记录,尽管我没有显示它,但我的操作有HttpPost属性。)html表单将只在表单页面上的表单元素中发布值。如果它们位于html表单之外,则不会发布。HiddenInputAttribute的文档说,“表示用于指示属性或字段值是否应呈现为隐藏输入元素的属性。”我将“被呈现”视为将其放置在表单元素内。如果你明白,请告诉我HiddenInput的用途。谢谢这可能有助于解释一些问题。如果这不能回答你的问题,我很抱歉。