大多数MVC辅助方法都有一个XXXFor变体。它们旨在与具体模型类结合使用。这个想法是允许帮助器基于您在lambda中指定的属性为表单输入控件导出适当的“name”属性。这意味着你将消除“魔术字符串”,否则你必须使用它来关联模型属性和视图。例如:
Html.Hidden("Name", "Value")
将导致:
在您的控制器中,您可能有一个操作:
[HttpPost]
public ActionResult MyAction(MyModel model)
{
}
和一个模型像:
public class MyModel
{
public string Name { get; set; }
}
我们上面使用的原始Html.Hidden将获得与模型中的Name属性相关。然而,有点令人讨厌的是,属性的值“Name”必须使用字符串(“Name”)指定。如果你重命名Model上的Name属性,你的代码将会中断,错误会有些难以弄清楚。另一方面,如果你使用HiddenFor,你得到的保护:
Html.HiddenFor(x => x.Name, "Value");
现在,如果重命名Name属性,您将获得一个显式运行时错误,指示找不到该属性。此外,您还可以获得静态分析的其他好处,例如在键入x后获得成员的下拉。