Html.LabelFor Specified Text

C#asp.net MvcRazor

C# Problem Overview


Anyone got any idea on how to specify text when using Html.LabelFor(c=>c.MyField). It's just MyField might not be an appropriate name to display on screen, you may want "The Super Fantastic Field" instead, but there doesn't appear to be any overloads.

Any ideas?

C# Solutions


Solution 1 - C#

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.)

Solution 2 - C#

Easy solution just add the following in the view:

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

Solution 3 - C#

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

Solution 4 - C#

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

Solution 5 - C#

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.

Solution 6 - C#

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.

Solution 7 - C#

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKezzerView Question on Stackoverflow
Solution 1 - C#Curtis BuysView Answer on Stackoverflow
Solution 2 - C#Faisal KhalidView Answer on Stackoverflow
Solution 3 - C#Joe CartanoView Answer on Stackoverflow
Solution 4 - C#DanielView Answer on Stackoverflow
Solution 5 - C#Baimyrza ShamyrView Answer on Stackoverflow
Solution 6 - C#ChanceView Answer on Stackoverflow
Solution 7 - C#yogibeareView Answer on Stackoverflow