Joe*_*itz 61 c# asp.net-mvc html-helper html.hiddenfor
我可以在MSDN上找到Html.HiddenFor的一个很好的定义,但我在Html.Hidden上找到的唯一的东西与它有的问题有关.
有人可以给我一个很好的定义和一个例子.
Kir*_*oll 111
大多数MVC辅助方法都有一个XXXFor变体.它们旨在与具体模型类一起使用.这个想法是允许帮助程序根据您在lambda中指定的属性为表单输入控件派生适当的"name"属性.这意味着您可以消除"魔术字符串",否则您必须使用它来将模型属性与视图相关联.例如:
Html.Hidden("Name", "Value")
Run Code Online (Sandbox Code Playgroud)
将导致:
<input id="Name" name="Name" type="hidden" value="Value">
Run Code Online (Sandbox Code Playgroud)
在您的控制器中,您可能会执行以下操作:
[HttpPost]
public ActionResult MyAction(MyModel model)
{
}
Run Code Online (Sandbox Code Playgroud)
和一个模型:
public class MyModel
{
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Html.Hidden
我们上面使用的原始数据将Name
与模型中的属性相关联.但是,必须使用字符串("Name")指定属性的值"Name",这有点令人反感.如果您Name
在模型上重命名该属性,您的代码将会中断并且错误将难以理解.另一方面,如果您使用HiddenFor
,您将受到以下保护:
Html.HiddenFor(x => x.Name, "Value");
Run Code Online (Sandbox Code Playgroud)
现在,如果重命名该Name
属性,您将收到一个显式的运行时错误,指示无法找到该属性.此外,您还可以获得静态分析的其他好处,例如在键入后获取成员的下拉列表x.
.
Mar*_*Leo 15
Html.Hidden创建一个隐藏的输入但你必须具体说明你想要给该字段和值的名称和所有属性,而Html.HiddenFor
为你传递给它的对象创建一个隐藏的输入,它们看起来像这样:
Html.Hidden("yourProperty",model.yourProperty);
Html.HiddenFor(m => m.yourProperty)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,输出是相同的!
HtmlHelper类中的每个方法都有一个带For
后缀的双胞胎.
Html.Hidden将一个字符串作为你必须提供的参数,但是Html.HiddenFor接受一个Expression,如果你查看的是强类型视图,你可以从中受益并为该方法提供一个像这样的lambda表达式
o=>o.SomeProperty
Run Code Online (Sandbox Code Playgroud)
在使用Html.Hidden方法的情况下,而不是" SomeProperty".
归档时间: |
|
查看次数: |
123079 次 |
最近记录: |