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还允许您传递模板和字段的名称作为参数。