Question

If I have a table Orders with fields CustomerID, OrderID and OrderDate, then the "Linq-to-SQL classes" generated class will be called Orders, with members called CustomerID, OrderID and OrderDate. So far so good.

However, if I then do Html.LabelFor(m => m.OrderDate) then the generated text will be "OrderDate" instead of "Order Date".

I tried using Order_Date as the field name, but that didn't work. Is there any way to get it to infer a better display name?

[I know that I can use data annotations to specify the display name explicitly, but I really don't want to do that for all my classes/members - I just want it to work by convention.]

Was it helpful?

Solution

This method takes advantage of existing MVC 2 architecture to place conventions over the entire *For rendering methods instead of one off HTML helpers and without having to re-label everything with spaced property names.

How to "DRY up" C# attributes in Models and ViewModels?

Essentially what your doing is overriding the default ConventionModelMetadataProvider behavior of MVC 2 and providing hooks for you to insert your own opinionated conventions.

OTHER TIPS

I suggest you create your own HTML Helper for this, something like Html.MyLabelFor.

The rules to apply from here are up to you. You can simply split the word by case.

There is a solution available for your requirements contained within the answer to this question. Asp.Net MVC 2 LabelFor Custom Text.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top