在视图中使用名称数据注释与硬编码

时间:2015-05-15 10:11:56

标签: c# entity-framework data-annotations

我的EntityFramework域模型中有以下内容:

[Required]
[Display(Name = "First Name")]
public string FirstName { get; set; }

[Required]
[Display(Name = "Last Name")]
public string LastName { get; set; }

在我看来,我会做以下事情:

@Html.LabelFor(model => model.FirstName)

但我想知道,为什么首选指定"显示名称"在我的模型中,而不是仅在View页面中手动编写Label?

我实际上可以看到这会导致更多的问题,如果在6个月的时间内有人来找我说“我们不想让它再说出名字,我们希望它能说出来&#34 ;你的名字"我要么必须在我的视图中恢复硬编码,要么重新编译我的模型项目以使更改生效..

使用数据注释是否有任何我不知道的好处?

2 个答案:

答案 0 :(得分:3)

DisplayAttribute的好处是本地化,如下面的代码。

[Required]
[Display(Name = "First Name", ResourceType = typeof(YourResources)))]
public string FirstName { get; set; }

ASP.NET MVC 3 localization with DisplayAttribute and custom resource provider对本地化以及实现它的不同方式有一些很好的答案。

答案 1 :(得分:2)

好处只是DRY

所以你目前在一个地方使用它,你的编辑页面。现在添加:

  • 多个验证消息(需要名字等)
  • 一个视图(只读)页面
  • 列表页面
  • 摘要/工具提示
  • 另一页上的参考
  • 记录/追踪
  • 一个面包屑(好吧,在这里推了一下)

现在你必须在15个以上的地方改变它,错过一个......很高的机会 [一个或多个错字的机会......不低]

因此,在您使用的每一个中都引用了DisplayName而不是手动输入...现在您只需要在... 1位置进行更改。