2010-03-29 9 views
2

Si j'ai une table Orders avec des champs CustomerID, OrderID et OrderDate, puis les « classes LINQ to SQL » classe générée seront appelés Orders, avec les membres appelés CustomerID, OrderID et OrderDate. Jusqu'ici tout va bien.Classes ASP.NET MVC/Linq-to-SQL: puis-je obtenir des noms d'affichage lisibles?

Cependant, si je fais ensuite Html.LabelFor(m => m.OrderDate) alors le texte généré sera "OrderDate" au lieu de "Order Date".

J'ai essayé d'utiliser Order_Date comme nom de champ, mais cela n'a pas fonctionné. Y at-il un moyen de l'obtenir pour inférer un meilleur nom d'affichage?

[Je sais que je peux utiliser les annotations de données pour spécifier le nom d'affichage explicitement, mais je ne veux vraiment pas faire cela pour toutes mes classes/membres -. Je veux juste que cela fonctionne par convention]

+0

duplication possible de http://stackoverflow.com/questions/2269144/how-to-dry-up-c-attributes-in-models-and-viewmodels –

Répondre

1

Cette méthode tire parti de l'architecture MVC 2 existante pour placer des conventions sur l'ensemble des méthodes de rendu plutôt que sur des aides HTML et sans avoir à tout ré-étiqueter avec des noms de propriété espacés.

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

Essentiellement ce que vous faites est prépondérant le comportement de ConventionModelMetadataProvider par défaut de MVC 2 et en fournissant des crochets pour vous d'insérer vos propres conventions opiniâtres.

+0

@jfar: J'espérais vraiment quelque chose d'out-of-the-box, mais c'est la meilleure chose suivante car au moins, il suit le chemin d'extensibilité (et est préférable de faire une ré-implémentation complète de * For). –

2

Je vous suggère de créer votre propre aide HTML pour cela, quelque chose comme Html.MyLabelFor.

Les règles à appliquer ici sont à vous. Vous pouvez simplement diviser le mot par cas.

+0

D'accord. "par convention" va à peu près signifier que vous devez le faire vous-même –

+0

Néanmoins, la "convention" en C#/VB est de nommer les propriétés en utilisant camel-case. Pour une méthode dans le seul but d'afficher une version lisible par l'homme de la propriété, je m'attendrais presque déjà à le faire. Par convention. –

+0

Ok, merci. Je vais marquer cela comme une réponse, même si ce n'est pas la réponse que je cherchais! –