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