我从 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/