繁体   English   中英

数据注释的比较

[英]Comparison of Data Annotations

以下三个注释之间有什么区别:

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

这里那里都有相关的SO问题,但我相信没有任何问题涵盖这三个问题。 我还看到一篇SO帖子声称AutoGenerateField = false完成任何事情 如果是这样,那么它是为了什么? 至于其他两个注释-ScaffoldColumn(false)和Display(Name =“”) - 它们是等价的吗?

  1. ScaffoldColumn(false)在使用@Html.DisplayForModel()@Html.EditorForModel (分别) 时才隐藏显示或编辑器字段,并且只有 在使用默认显示和编辑器模板才会隐藏。 如果覆盖内置模板,则需要在模板中添加回对此属性的支持。
  2. Display(Name="") :影响显示为DisplayForModelLabelLabelForModelEditorForModel Label EditorForModel 在这种情况下,显示名称设置为空字符串,因此字面上将输出为标签。 这不会阻止生成标签。
  3. 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM