1

以下三个注解有什么区别:

[ScaffoldColumn(false)]
[Display(Name = "")]
[Display(AutoGenerateField=false)]

这里那里都有相关的 SO 问题,但我相信没有一个涵盖所有三个问题。我还看到一个 SO 帖子声称AutoGenerateField=false 什么都不做。如果是这样,那它是为了什么?至于其他两个注释 - ScaffoldColumn(false) 和 Display(Name="") - 它们是否等效?

4

2 回答 2

4
  1. ScaffoldColumn(false):仅当您使用@Html.DisplayForModel()@Html.EditorForModel(分别)时隐藏显示或编辑器字段,并且 在您使用默认显示和编辑器模板时才隐藏。如果您覆盖内置模板,则需要在模板中重新添加对该属性的支持。
  2. Display(Name=""):影响显示为 、 、 和 的DisplayForModel标签LabelLabelForModel文本EditorForModel。在这种情况下,显示名称被设置为一个空字符串,因此将按字面意思作为标签输出。这不会阻止生成标签。
  3. Display(AutoGenerateField=false):正如您所建议的,任何默认模板或帮助程序似乎都无法识别。

不,1和2一样。

于 2012-06-20T17:11:12.193 回答
0

当用 ScaffoldColumn(false) 标记时

public class Hate
{
    [ScaffoldColumn(false)]
    public string What { get; set; }

    public string Why { get; set; }
}

@model StrippingHtml.Models.Hate
@{
  ViewBag.Title = "What & Why You Hate";
}
<h2>
  What & Why You Hate</h2>
@using (Html.BeginForm("Save", "Hate"))
{
  <div>
    @Html.EditorForModel()
  </div>
}

在此处输入图像描述

当标记为 Display(Name="")

public class Hate
{
    [Display(Name="")]
    public string What { get; set; }

    public string Why { get; set; }
}

在此处输入图像描述

于 2012-06-20T17:19:43.543 回答