Html.Hidden和Html.HiddenFor之间有什么区别?

13 浏览
0 Comments

Html.Hidden和Html.HiddenFor之间有什么区别?

我在MSDN上找到了关于Html.HiddenFor的良好定义,但我在Html.Hidden上只找到了相关问题。

有人能给我一个好的定义和一个例子吗。

admin 更改状态以发布 2023年5月21日
0
0 Comments

Html.Hidden创建一个隐藏输入框,但是您必须指定名称和要为该字段和值设置的所有属性。Html.HiddenFor为您传递给它的对象创建隐藏输入框,它们看起来像这样:

Html.Hidden("yourProperty",model.yourProperty);
Html.HiddenFor(m => m.yourProperty)

在这种情况下,输出结果相同!

0
0 Comments

大多数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属性,您的代码将会出错,错误有点难以找出。另一方面,如果使用HiddenFor,您就会受到保护:

Html.HiddenFor(x => x.Name, "Value");

现在,如果您重命名Name属性,您将收到一个明确的运行时错误,指示找不到该属性。此外,您还可以获得静态分析的其他好处,例如在键入x.之后获取成员的下拉列表。

0