我为什么要在MVC中使用LabelFor?

时间:2013-10-29 23:04:41

标签: asp.net-mvc html-helper html.labelfor

为什么我应该使用LabelFor代替<label>

例如

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

VS

<label for="FirstName">First Name</label>
@Html.DisplayFor(model => model.FirstName)

除此之外, @ p.s.w.g已经涵盖了这个问题的DRY方面。我还想知道它是否有助于本地化。即。基于当前语言设置的不同标签。

2 个答案:

答案 0 :(得分:46)

好吧,如果你用这样的DisplayNameAttribute装饰你的模型:

[DisplayName("First Name")]
string FirstName { get; set; }

然后,您只需在一个地方指定标签的文字内容。您可能必须在多个位置创建类似的标签,如果您需要更改标签的文本,则只需执行一次即可。

如果您想要针对不同语言本地化您的应用程序,这一点更为重要,您可以使用DisplayAttribute执行此操作:

[Display(Name = "FirstNameLabel", ResourceType = typeof(MyResources))]
string FirstName { get; set; }

这也意味着你将拥有更强烈类型的视图。如果你需要输入很多字符串,就很容易像"FirstName"这样的字符串,但是使用帮助器方法可以让编译器在大多数情况下捕获这样的错误。

答案 1 :(得分:5)

LabelFor允许您控制视图模型中的所有内容,而无需担心控件。

假设您在2个地方使用相同的视图模型,这意味着您可以在一个位置更改名称以更新所有控件。

不使用 ,但它有其用途。