2010-09-02 13 views
0

J'ai deux classes:attribue Overridding ComponentModel (c.-à-DisplayName) ne fonctionne pas comme prévu

public class DocumentViewModel 
{ 
    public virtual string DocumentNumber { get; set; } 
} 

public class PurchaseOrderViewModel : DocumentViewModel 
{ 
    [DisplayName("PO Number")] 
    public override string DocumentNumber { get; set; } 
} 

et une vue:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Onyx.Web.Models.PurchaseOrderViewModel>" %> 

<strong><%: Html.LabelFor(i => i.DocumentNumber) %>:</strong> <%: Model.DocumentNumber %> 

Je pense que, pour rendre

<strong>PO Number:</strong> PO-12345 

mais il rend effectivement

<strong>DocumentNumber:</strong> PO-12345 

Existe-t-il un moyen de contourner ce problème?

+0

J'ai regardé la copie possible, mais il n'y avait pas de résolution, plus il a été demandé en mars. J'espérais que les choses auraient changé. –

+0

J'ai essayé le casting, pas de chance :(Aussi, je peux comprendre ce qui se passe dans l'autre question, puisque leur modèle de base a un attribut Dans mon exemple, seul l'enfant a l'attribut assigné. –

Répondre

0

J'ai trouvé une solution à mon propre problème. Ce n'est pas parfait, mais ça va.

Comme ce ne sont que des ViewModels, ils ne sont pas logiques. Donc, j'ai changé class DocumentViewModel à interface IDocumentViewModel et, voilà, problème résolu. Je voudrais toujours que cela fonctionne pour l'héritage des classes, mais c'est plus mon entêtement que n'importe quelle analyse de rentabilisation.