Html.LabelFor指定文本

时间:2009-08-21 16:09:30

标签: c# asp.net-mvc razor

在使用Html.LabelFor(c=>c.MyField)时,任何人都知道如何指定文字。它只是MyField可能不是在屏幕上显示的合适名称,您可能需要“超级神奇场”,但似乎没有任何重载。

有什么想法吗?

7 个答案:

答案 0 :(得分:132)

您使用System.ComponentModel.DataAnnotations.DisplayAttribute

[Display(Name = "My Field")]
public string MyField { get; set; }

在属性上设置ResourceType属性将允许您使用资源文件。

(在.NET 4之前使用System.ComponentModel.DisplayNameAttribute时要注意显示名称必须是编译时常量。)

答案 1 :(得分:46)

简单的解决方案只需在视图中添加以下内容:

@Html.LabelFor(c=>c.MyField, "My Field")

答案 2 :(得分:26)

MVC 3中存在新的重载,因此您应该能够为帮助者的标签指定自定义测试。

答案 3 :(得分:3)

我还没有下载v2,所以我无法测试,但我相信它就像DynamicData一样,在这种情况下你会在你的模型上做这样的事情:

[Display(Name = "The Super Fantastic Field")]
public string MyField {get;set;}

答案 4 :(得分:2)

有两种方式:1"直接注释"
2" Annotatinos with a resource"
直接注释

[Display(Name = "My Field")]
public string MyField { get; set; }

Annotatinos with a resource

[Display(Name = "My_Field",ResourceType = typeof(Resource))]
public string MyField { get; set; }

第二种方法需要在资源文件中添加一个值,可能命名为 Resource.resx
使用适合您的目的。

答案 5 :(得分:0)

我还没有检查过CP1,但我读过Scott发布的内容,我似乎记得代码是由T4生成的。我想你总是可以修改它,但我怀疑它们会在CP2中提供重载。

编辑:源始终可用,因此您只需修改方法,更改T4生成器,您就可以开始了。还要为该mod添加票证或请求(以某种方式),以便它可以用于下一个版本。

答案 6 :(得分:0)

有5次重载。有几个提供" string labelText"的第二个参数,你可以设置为"超级神奇场"。