[英]Comparison of Data Annotations
以下三个注释之间有什么区别:
[ScaffoldColumn(false)]
[Display(Name = "")]
[Display(AutoGenerateField=false)]
这里和那里都有相关的SO问题,但我相信没有任何问题涵盖这三个问题。 我还看到一篇SO帖子声称AutoGenerateField = false完成任何事情 。 如果是这样,那么它是为了什么? 至于其他两个注释-ScaffoldColumn(false)和Display(Name =“”) - 它们是等价的吗?
ScaffoldColumn(false)
: 仅在使用@Html.DisplayForModel()
或@Html.EditorForModel
(分别) 时才隐藏显示或编辑器字段,并且只有 在使用默认显示和编辑器模板时才会隐藏。 如果覆盖内置模板,则需要在模板中添加回对此属性的支持。 Display(Name="")
:影响显示为DisplayForModel
, Label
, LabelForModel
和EditorForModel
Label
EditorForModel
。 在这种情况下,显示名称设置为空字符串,因此字面上将输出为标签。 这不会阻止生成标签。 Display(AutoGenerateField=false)
:似乎无法按照您的建议由任何默认模板或帮助程序识别。 不,1和2 不一样。
用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; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.