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的用途。谢谢这可能有助于解释一些问题。如果这不能回答你的问题,我很抱歉。