为什么强类型的Html助手会帮助我?

时间:2010-01-11 22:57:12

标签: asp.net-mvc

我阅读了ScottGu对Strongly Typed Html Helpers的解释,我理解它使我能够更好地对视图进行编译时检查。当我在MVC1 Html.TextBox帮助器中使用model.PropertyName时,我的印象是我已经有了这个,但显然这不是真的。那么,使用lambda表达式如何更好地为我做这件事呢?

3 个答案:

答案 0 :(得分:13)

考虑现有HTML帮助程序方法的语法:

<%= Html.TextBox("Quantity", Model.Quantity) %>

如果将对象的Quantity属性重命名为“CurrentQuantity”,则生成的<input>元素仍将指定name="Quantity",如果您不记得,模型绑定将会中断改变第一个参数。

通过使用lambda表达式指定元素的名称,不正确或拼写错误的属性名称将成为编译错误。

<!-- No magic strings here! -->
<%= Html.TextBoxFor(model => model.CurrentQuantity) %>

答案 1 :(得分:2)

当您为帮助程序指定属性的名称时,会出现改进。对于强类型帮助程序,它使用lambda表达式而不是属性名来确定要使用的属性值。

<%= Html.TextBox( "Name" ) %>

VS

<%= Html.TextBox( m => m.Name ) %>

答案 2 :(得分:0)

当您错误地提到属性名称时,Textbox不会给出编译时错误。它会抛出运行时异常。 TextBoxFor是一种遗传方法,因此当您错误地提到属性名称时,它会给出编译时错误。 当我们在视图

中追加两个属性名称时,TextBoxFor会很有用
@Html.TextBox( "Name" ,"value",new { @class="class"}) 

VS

@Html.TextBoxFor( m => m.Name, new { @id="txtValue"})