Html.DisplayTextFor()有什么意义?

时间:2010-08-13 03:09:53

标签: asp.net-mvc html-helper

是否有充分的理由使用强类型的html帮助程序...

<%: Html.DisplayTextFor(model => model.Email) %>

与......相反。

<%: Model.Email %> 

3 个答案:

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