指定文本的标签

任何人都知道如何在使用 Html.LabelFor(c=>c.MyField)时指定文本。这只是 MyField可能不是一个合适的名字显示在屏幕上,你可能想要“超级神奇的领域”而不是,但似乎没有任何过载。

有什么想法吗?

76232 次浏览

I haven't checked out CP1 yet but I read over Scott's release of it and I seem to recall that the code was generated by T4. I suppose you could always mod that, but I would suspect that they will provide overloads in CP2.

Edit: The source is always available and thus you could just mod the method, change the T4 generator, and you'll be good to go. Also put in a ticket or request (somehow) for that mod so it gets worked into the next version.

I haven't downloaded v2 yet, so I can't test, but I believe it works like DynamicData, in which case you'd do something like this on your model:

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

You use System.ComponentModel.DataAnnotations.DisplayAttribute:

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

Setting the ResourceType property on your attribute will allow you to use a resource file.

(Prior to .NET 4 use System.ComponentModel.DisplayNameAttribute with the caveat that the display name must be a compile-time constant.)

There is a new overload in MVC 3 so you should be able to specifiy custom test for the labelfor helper.

Easy solution just add the following in the view:

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

There are 5 overloads. Several offer second parameter of "string labelText", which you would set to "The Super Fantastic Field".

There are two ways
1"direct annotations"
2"Annotatinos with a resource"
Direct annotations

[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; }

Second way will require to add a value in resource file probably named as Resource.resx.
Use which suits your purpose.