108

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

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

这些助手应该在代码中的什么位置?

4

4 回答 4

115

它在表单上为您传递的字段(来自您的模型)创建一个隐藏的输入。

它对于模型/视图模型中的字段很有用,您需要在页面上保留并在进行另一次调用时传回但用户不应看到这些字段。

考虑以下 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>
于 2010-10-05T18:43:59.143 回答
8

并在您的 Edit 操作方法上使用隐藏的 ID 输入:

[HttpPost]
public ActionResult Edit(FormCollection collection)
{
    ViewModel.ID = Convert.ToInt32(collection["ID"]);
}
于 2011-03-04T19:20:38.290 回答
2

像许多功能一样,这个功能可以以多种不同的方式使用来解决许多不同的问题,我认为它是我们工具带中的另一个工具。

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

要查看 html.hiddenfor 的巨大动机,我建议您查看Passing data from a View to a Controller in .NET MVC - "@model" not highlighting

于 2017-06-28T16:07:00.500 回答
0

Razor 代码@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

于 2017-01-04T07:52:56.040 回答