Html.DisplayTextFor()有什么意义?

Sea*_*ain 47 asp.net-mvc html-helper

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

<%: Html.DisplayTextFor(model => model.Email) %>
Run Code Online (Sandbox Code Playgroud)

而不是......

<%: Model.Email %> 
Run Code Online (Sandbox Code Playgroud)

Yng*_*sen 74

考虑以下模型:

public class MyModel
{
    public string Name { get; set; }

    [DisplayFormat(NullDisplayText = "No value available!")]
    public string Email { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

在我看来:

<%= Html.DisplayTextFor(m => m.Email) %>

<%: Model.Email %>
Run Code Online (Sandbox Code Playgroud)

如果我们将电子邮件保留为"空"而第二行将不显示任何内容,则第一行将显示"无可用值".

结论:Html.DisplayTextFor将考虑您的属性上的DataAnnotations,<%: Model.Email %>不会.<%: Model.Email %>当值为null时,也将抛出"对象引用错误",但<%= Html.DisplayTextFor %>不会.


JcM*_*Dev 6

DisplayTextFor也将在"DisplayFor"和"EditFor"执行期间被调用.这将确保任何模板化帮助器将使用正确的模板化助手显示文本(如果设置)...因此对单个模板化助手的更改将通过该文本项的所有显示传播...简单显示,编辑表单,创建表单等等等


Jus*_*tin 5

好吧,如果你没有传入模型(或传递null),DisplayTextFor不会中断.Model.Email将在null上抛出异常.因此,DisplayTextFor更强大.

强类型助手的要点是允许更长的编译时间检查.这在重构时非常方便.

DisplayTextFor允许在整个页面中使用一致的构造(与其他强类型的助手一起使用).有些人可能会觉得更有吸引力.

DisplayTextFor还允许您将模板和字段的名称作为参数传递.