Html.HiddenFor做什么?

虽然我已经阅读了关于Html.HiddenFor的文档,但我没有理解它用于...

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

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


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

对于您的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>

并且在您的编辑操作方法中使用隐藏的ID输入:

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

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

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

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

链接地址: http://www.djcxy.com/p/60437.html

上一篇: What does Html.HiddenFor do?

下一篇: ASP.Net MVC Custom Model Binding explanation