Les attributs de modélisation de composant de remplacement (c'est-à-dire l'affichage) ne fonctionnent pas comme prévu

StackOverflow https://stackoverflow.com/questions/3627256

Question

J'ai deux cours:

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 m'attends à ce que cela rende

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

Mais ça rend vraiment

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

Y a-t-il un moyen de contourner ceci?

Était-ce utile?

La solution

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

Comme ce ne sont que des modes de vue, il n'y a pas de logique en eux. Alors j'ai changé class DocumentViewModel à interface IDocumentViewModel et, voilà, problème résolu.

Je voudrais toujours faire fonctionner cela pour des cours hérités, mais c'est plus mon entêtement que n'importe quelle analyse de rentabilisation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top