Answers:
Html.DisplayFor() 将呈现与属性类型匹配的DisplayTemplate。
如果找不到,我想它会调用.ToString()。
如果您不了解显示模板,则它们是局部视图,可以放置在DisplayTemplates与控制器关联的view文件夹内的文件夹中。
例:
如果您使用以下代码在views文件夹的文件夹(例如或)String.cshtml内创建一个名为view的视图:DisplayTemplatesHomeShared
@model string
@if (string.IsNullOrEmpty(Model)) {
   <strong>Null string</strong>
}
else {
   @Model
}
然后@Html.DisplayFor(model => model.Title)(假设Title是字符串)将使用模板并显示<strong>Null string</strong>字符串是否为null或为空。
DisplayFor对模板也很有用。您可以为模型编写模板,然后执行以下操作:
@Html.DisplayFor(m => m)
类似于@Html.EditorFor(m => m)。这对于DRY主体很有用,这样您就不必为相同的模型一遍又一遍地编写相同的显示逻辑。
看一下有关MVC2模板的博客。它仍然非常适用于MVC3:
http://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/
如果您的模型具有数据注释,这也很有用。例如,如果模型的属性装饰有EmailAddress数据注释,DisplayFor则将其呈现为mailto:链接。
@Html.DisplayFor(m => m)也可以简化为公正@Html.DisplayForModel()。
                    在为自己寻找答案一段时间后,我可以找到一些东西。通常,如果我们仅将其用于一个属性,即使我们对生成的HTML进行“查看源代码”,它也会看起来相同。例如,当我只想为我的类显示Name属性时,就会生成HTML
    <td>
    myClassNameProperty
    </td>
   <td>
    myClassNameProperty, This is direct from Item
    </td>
这是下面代码生成的HTML
<td>
@Html.DisplayFor(modelItem=>item.Genre.Name)            
</td>
<td>
@item.Genre.Name, This is direct from Item
</td>
现在,如果同时要在类“ Genre”的一个语句中显示所有属性,则至少可以使用@ Html.DisplayFor()保存输入内容
我可以编写@ Html.DisplayFor(modelItem => item.Genre)来代替为Genre的每个属性编写单独的语句,如下所示
@item.Genre.Name
@item.Genre.Id
@item.Genre.Description
等等,取决于属性的数量。