asp.net – MVC 4数据注释“显示”属性

前端之家收集整理的这篇文章主要介绍了asp.net – MVC 4数据注释“显示”属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我开始与MVC 4(Razor视图引擎)。 (我相信这可能适用于MVC 3和更早版本。)我想知道是否有任何好处,使用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的原因是因为属性的数据在页面显示为静态(即不可编辑)文本。数据永远不会在此网页上进行编辑,因此我无需在第二个< div>中使用Html.TextBoxFor。并随后使用Html.LabelFor将标签与该文本框正确关联。

解决方法

如果两个不同的视图共享相同的模型(例如,也许一个是移动输出和一个是常规的),它可能很高兴有字符串驻留在一个地方:作为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相关文章