Answers:
它在您通过它的字段(来自模型)的表单上创建一个隐藏的输入。
对于Model / ViewModel中的字段很有用,您需要将其保留在页面上,并在进行另一个调用时又传回,但用户不应该看到。
考虑以下ViewModel类:
public class ViewModel
{
public string Value { get; set; }
public int Id { get; set; }
}
现在,您希望编辑页面存储ID,但不显示该ID:
<% using(Html.BeginForm() { %>
<%= Html.HiddenFor(model.Id) %><br />
<%= Html.TextBoxFor(model.Value) %>
<% } %>
这相当于以下HTML:
<form name="form1">
<input type="hidden" name="Id">2</input>
<input type="text" name="Value" value="Some Text" />
</form>
并使用您在Edit操作方法上返回的隐藏ID输入:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
像许多功能一样,可以以多种不同方式使用此功能来解决许多不同的问题,我认为它是我们工具栏中的另一种工具。
到目前为止,讨论主要集中在简单地隐藏ID上,但这只是一个值,为什么不将其用于很多值!那就是我在做的事,我用它一次只在一个视图中加载一个类中的值,因为html.beginform创建了一个新对象,如果该视图的模型对象已经传递了一些值,除非您在beginform中提供对这些值的引用,否则这些值将丢失。
若要查看html.hiddenfor的强大动机,建议您看到将数据从视图传递到.NET MVC中的控制器-“ @model”不突出显示
Razor代码@ Html.Hidden或@ Html.HiddenFor的使用类似于以下Html代码
<input type="hidden"/>
并参考以下链接