我开始与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; } }
我承认这个例子是很有意思的…
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。