Html.DisplayTextFor()是什么意思?
有没有一个很好的理由使用强types的HTML帮手…
<%: Html.DisplayTextFor(model => model.Email) %>
与…相反
<%: Model.Email %>
考虑下面的模型:
public class MyModel { public string Name { get; set; } [DisplayFormat(NullDisplayText = "No value available!")] public string Email { get; set; } }
在我看来:
<%= Html.DisplayTextFor(m => m.Email) %> <%: Model.Email %>
如果我们将电子邮件设置为“空”,而第二行将不显示任何内容,则第一行将显示“无可用值”。
结论:Html.DisplayTextFor将考虑您的属性上的DataAnnotations, <%: Model.Email %>
不会。 当值为null时, <%: Model.Email %>
将会在<%: Model.Email %>
抛出一个“Object reference error”。
DisplayTextFor也将在“DisplayFor”和“EditFor”执行过程中被调用。 这将确保任何模板助手将显示文本使用正确的模板助手,如果设置…所以对单个模板助手的改变将通过该文本项目的所有显示传播…简单的显示,编辑表单,创build表单等等等
那么,如果您不传入模型(或传递null),则DisplayTextFor不会中断。 Model.Email会在null上抛出一个exception。 所以,DisplayTextFor更强大。
强types助手的重点是允许更多的编译时间检查。 这在重构时非常方便。
DisplayTextFor允许在整个页面中使用一致的构造(与其他强types的帮助器)。 有些人可能会觉得更有吸引力。
DisplayTextFor还允许您传递模板和字段的名称作为参数。