虽然我已经阅读了Html.HiddenFor上的文档,但我还没有掌握它是用来做什么的。
有人能解释一下它的用法并举个简短的例子吗?
这些帮助器应该在代码中放在哪里?
发布于 2010-10-06 02:43:59
它在表单上为您传递的字段(来自您的模型)创建一个隐藏输入。
它对于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>
发布于 2011-03-05 03:20:38
并在Edit操作方法中使用隐藏的ID输入:
[HttpPost]
public ActionResult Edit(FormCollection collection)
{
ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
发布于 2017-06-29 00:07:01
像许多函数一样,这个函数可以用很多不同的方式来解决许多不同的问题,我认为它是我们工具带中的另一个工具。
到目前为止,讨论主要集中在简单地隐藏ID,但这只是一个值,为什么不将它用于很多值!这就是我正在做的事情,我使用它来加载类中的值,一次只有一个视图,因为html.beginform创建了一个新对象,如果该视图的模型对象已经传递了一些值,那么这些值将会丢失,除非您在beginform中提供了对这些值的引用。
要了解html.hiddenfor的强大动力,我建议您访问Passing data from a View to a Controller in .NET MVC - "@model" not highlighting
https://stackoverflow.com/questions/3866716
复制相似问题