以下三个注释之间有什么区别:
[ScaffoldColumn(false)]
[Display(Name = "")]
[Display(AutoGenerateField=false)]
有相关的SO问题here和there,但我认为没有任何问题涵盖所有三个问题。我还看到一篇SO帖子声称AutoGenerateField=false accomplishes nothing。如果是这样,那么它是为了什么?至于其他两个注释-ScaffoldColumn(false)和Display(Name =“”) - 它们是等价的吗?
答案 0 :(得分:4)
ScaffoldColumn(false)
:当您分别使用@Html.DisplayForModel()
或@Html.EditorForModel
和 时隐藏显示或编辑器字段 只要您使用默认的显示和编辑模板。如果您覆盖内置模板,则需要在模板中添加回对此属性的支持。Display(Name="")
:影响显示为DisplayForModel
,Label
,LabelForModel
和EditorForModel
标签的文字。在这种情况下,显示名称设置为空字符串,因此字面上将输出为标签。这不会阻止生成标签。Display(AutoGenerateField=false)
:似乎无法按照您的建议被任何默认模板或帮助程序识别。不,1和2 不相同。
答案 1 :(得分: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>
}
标记为显示(名称=“”)
时public class Hate
{
[Display(Name="")]
public string What { get; set; }
public string Why { get; set; }
}