我读了ScottGu对Strongly Typed Html Helpers的解释,我明白这让我有能力更好地编译视图。我的印象是,当我在MVC1 Html.TextBox助手中使用model.PropertyName时,我已经有了这个,但显然这是不正确的。那么,如何使用lambda表达式对我更好呢?为什么强类型的Html Helpers帮助我?
2
A
回答
13
考虑现有的HTML辅助方法的语法:
<%= Html.TextBox("Quantity", Model.Quantity) %>
如果你的对象为 “CurrentQuantity” 上重命名Quantity
属性,生成的<input>
元素仍然会指定name="Quantity"
,如果您不记得更改第一个参数,模型绑定将会中断。
通过使用lambda表达式指定元素的名称,不正确或拼写错误的属性名称将成为编译错误。
<!-- No magic strings here! -->
<%= Html.TextBoxFor(model => model.CurrentQuantity) %>
2
当您将属性的名称指定给帮助程序时,会有所改进。使用强类型助手,它使用lambda表达式而不是属性名称来确定要使用哪个属性值。
<%= Html.TextBox("Name") %>
VS
<%= Html.TextBox(m => m.Name) %>
+0
快速和对点 TextBoxFor会有所帮助。 :) – BobbyShaftoe 2010-01-12 02:21:10
0
当您错误地提到属性名称时,文本框不会给出编译时错误。它会抛出运行时异常。 TextBoxFor是一种遗传方法,因此当您错误地提到属性名称时,它会给编译时错误。当我们考虑到
@Html.TextBox("Name" ,"value",new { @class="class"})
追加合并两个属性名VS
@Html.TextBoxFor(m => m.Name, new { @id="txtValue"})
相关问题
- 1. 为什么我不能在ASP.NET MVC 2中使用强类型视图的Html帮助器方法?
- 2. HTML代码强类型的HTML帮手
- 3. 为什么使用CakePHP的HTML Helpers?
- 4. 需要帮助的强类型查看
- 5. 为什么我的Html Helpers没有智能感知?
- 6. 帮助在Asp.net MVC 2中创建强类型的html助手扩展
- 7. ASP.NET MVC强类型HTML助手
- 8. 强类型视图使用的html助手的正确语法是什么?
- 9. 为什么typedef没有强类型?
- 10. ASP.NET MVC3,为什么我们需要强类型的View?
- 11. 如何制作自定义的强类型html帮助器方法?
- 12. 我可以为MVC的HTML帮助程序使用LambdaExpression类型吗?
- 13. 为什么不应该帮助者在他们的HTML?
- 14. 什么“setContentView”帮助
- 15. 为什么Spring的@Transactional帮助性能
- 16. asp.net-mvc强类型助手在底下使用什么?
- 17. 如何制作支持泛型类型的HTML Helpers?
- 18. 帮助布局类型
- 19. 谁能帮助,告诉我为什么我在功能
- 20. 为什么在C#和ASP.NET MVC中生成多个文件字段的类型文件的HTML帮助器EditorFor?
- 21. 将html转换为rails helpers
- 22. 帮助' - ':无不能强迫Fixnum对象(类型错误)
- 23. 为什么Rails命令强制为`new`命令提供帮助信息?
- 24. 帮助!!为什么我的回声不打印? :“(
- 25. 为什么我的自定义标签帮助器崩溃?
- 26. 帮助!为什么我的IE用户会被随机注销?
- 27. 帮助我理解了为什么Unicode的唯一与Python
- 28. 传递给视图的强类型模型作为对象处理。为什么?
- 29. 增强现实的帮助
- 30. Asp.net MVC 2,火花发动机和强类型的HTML辅助
嗯,是的,因为前面的HtmlHelper方法中的第一个参数“Quantity”是当提交值时试图绑定回来的东西。现在我懂了。 – 2010-01-11 23:12:33