是否有充分的理由使用强类型的html帮助程序...
<%: Html.DisplayTextFor(model => model.Email) %>
与......相反。
<%: Model.Email %>
答案 0 :(得分:73)
考虑以下模型:
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 %>
如果我们将电子邮件保留为“null”,则第一行将显示“No value available”,而第二行不显示任何内容。
结论:
Html.DisplayTextFor将考虑您的属性上的DataAnnotations,<%: Model.Email %>
将不会。
当值为null时,<%: Model.Email %>
也会抛出“对象引用错误”,但<%= Html.DisplayTextFor %>
不会。
答案 1 :(得分:6)
DisplayTextFor也将在“DisplayFor”和“EditFor”执行期间被调用。这将确保任何模板化帮助器将使用正确的模板化助手显示文本(如果设置)...因此对单个模板化助手的更改将通过该文本项的所有显示传播...简单显示,编辑表单,创建表单等等
答案 2 :(得分:5)
好吧,如果你没有传入模型(或传递null),DisplayTextFor不会中断。 Model.Email将在null上抛出异常。因此,DisplayTextFor更强大。
强类型帮助程序的要点是允许更长的编译时间检查。这在重构时非常方便。
DisplayTextFor允许在整个页面中使用一致的构造(与其他强类型的助手一起使用)。有些人可能会觉得更有吸引力。
DisplayTextFor还允许您将模板和字段的名称作为参数传递。