Attributi di sovrascrizione di componenti (cioè DisplayName) non funziona come previsto
-
26-09-2019 - |
Domanda
Ho due classi:
public class DocumentViewModel
{
public virtual string DocumentNumber { get; set; }
}
public class PurchaseOrderViewModel : DocumentViewModel
{
[DisplayName("PO Number")]
public override string DocumentNumber { get; set; }
}
E una vista:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Onyx.Web.Models.PurchaseOrderViewModel>" %>
<strong><%: Html.LabelFor(i => i.DocumentNumber) %>:</strong> <%: Model.DocumentNumber %>
Mi aspetto che si renda
<strong>PO Number:</strong> PO-12345
Ma in realtà rende
<strong>DocumentNumber:</strong> PO-12345
C'è un modo per aggirare questo?
Soluzione
Ho trovato una soluzione al mio problema. Non è perfetto, ma va bene.
Dal momento che questi sono solo ViewModels, non c'è una logica in essi. Quindi, sono cambiato class DocumentViewModel
a interface IDocumentViewModel
e, Ecco, problema risolto.
Mi piacerebbe ancora far funzionare questo per ereditare le lezioni, ma è più la mia testardaggine di qualsiasi caso aziendale.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow