Html.HiddenFor做什么?

虽然我已经阅读了关于Html.HiddenFor的文档,但我还没有掌握它的用途…

有人可以解释它的用途,并举一个简短的例子吗?

这些助手应该在哪里进入代码?

它会在您传递的字段(来自您的模型)的表单上创build一个隐藏的input。

这对于Model / ViewModel中的字段是非常有用的,您需要将其保留在页面上,并在另一个调用进行时返回,但不应该被用户看到。

考虑下面的ViewModel类:

public class ViewModel { public string Value { get; set; } public int Id { get; set; } } 

现在你想编辑页面来存储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> 

并在您的编辑操作方法中使用隐藏的IDinput:

 [HttpPost] public ActionResult Edit(FormCollection collection) { ViewModel.ID = Convert.ToInt32(collection["ID"]); } 

像许多函数一样,这个函数可以用很多不同的方法来解决许多不同的问题,我认为它是我们工具带中的又一个工具。

到目前为止,讨论主要集中在简单地隐藏一个ID,但这只是一个值,为什么不把它用于很多值呢! 这就是我正在做的,我一次只用一个视图加载一个类的值,因为html.beginform会创build一个新的对象,如果你的模型对象的视图已经有一些值传递给它,这些值将被丢失,除非您在beginform中提供对这些值的引用。

为了看到html.hiddenfor的一个很好的动机,我build议你在.NET MVC中将视图中的数据传递给控制器​​ – “@model”没有突出显示

使用剃刀代码@ Html.Hidden或@ Html.HiddenFor类似于下面的Html代码

  <input type="hidden"/> 

也请参考以下链接

https://msdn.microsoft.com/en-us/library/system.web.mvc.html.inputextensions.hiddenfor(v=vs.118).aspx