asp.net - MVC 4 数据注释 "Display"属性

标签 asp.net asp.net-mvc asp.net-mvc-4

我从 MVC 4(Razor View 引擎)开始。 (我相信这也可能适用于 MVC 3 及更早版本。)我想知道在 View 中使用 DisplayAttribute 数据注释与直接在 HTML 中编写字符串相比是否有任何好处。例如,如果我有以下模型:

public class Thing
{
    public string WildAndCrazyProperty { get; set; }
}

...将属性注释为以下内容会有什么好处:

    [Display(Name = "Wild and Crazy")]
    public string WildAndCrazyProperty { get; set; }

...我的标记是:

<html>
    <body>
        <div>@Html.DisplayNameFor(modelItem => modelItem.WildAndCrazyProperty)</div>
        <div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
    </body>
</html>

...与没有注释并执行以下操作相比:

<html>
    <body>
        <div>Wild and Crazy</div>
        <div>@Html.DisplayFor(modelItem => modelItem.WildAndCrazyProperty)</div>
    </body>
</html>

在本例中我没有提到 Html.LabelFor 的原因是该属性的数据在页面上显示为静态(即不可编辑)文本。此页面上的数据永远不可编辑,因此我无需在第二个

中使用 Html.TextBoxFor ,然后使用 Html.LabelFor 来将标签与该文本框正确关联。

最佳答案

如果两个不同的 View 共享相同的模型(例如,一个用于移动输出,一个用于常规),则最好将字符串驻留在一个位置:作为 ViewModel 上的元数据。

此外,如果您有模型的继承版本,需要不同的显示,那么它可能会很有用。例如:

public class BaseViewModel
{
    [Display(Name = "Basic Name")]
    public virtual string Name { get; set; }
}

public class OtherViewModel : BaseViewModel
{
    [Display(Name = "Customized Inherited Name")]
    public override string Name { get; set; }
}

我承认这个例子是相当做作的......

这些是我能想到的支持使用该属性的最佳论据。我个人的观点是,在大多数情况下,这类事情最好留给标记。

关于asp.net - MVC 4 数据注释 "Display"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12735757/

相关文章:

jquery - 验证用户对操作过滤器或授权过滤器的权限?

c# - Visual Studio 2012 给出了荒谬的错误

c# - 使用编辑器模板处理可空类型

c# - 获取发布的文件扩展名 asp.net

javascript - jqGrid:为什么我为网格编辑定义的事件没有触发?

asp.net-mvc - 在 MVC3 页面中包含 RenderPartial 的开销是多少

c# - ASP.NET 5 Beta 7 (Web Tools 2015 Beta7) - wwwroot/index.html 未提供

c# - 使用 Selenium 在现有浏览器 session 中打开一个新选项卡

asp.net - Crystal Reports Viewer 无法越过第 2 页

performance - 调试慢速 Razor View