Os atributos de componente de componente exagerados (ou seja, DisplayName) não funciona como esperado
-
26-09-2019 - |
Pergunta
Eu tenho duas aulas:
public class DocumentViewModel
{
public virtual string DocumentNumber { get; set; }
}
public class PurchaseOrderViewModel : DocumentViewModel
{
[DisplayName("PO Number")]
public override string DocumentNumber { get; set; }
}
E uma visão:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Onyx.Web.Models.PurchaseOrderViewModel>" %>
<strong><%: Html.LabelFor(i => i.DocumentNumber) %>:</strong> <%: Model.DocumentNumber %>
Eu espero que isso renderize
<strong>PO Number:</strong> PO-12345
Mas na verdade renderiza
<strong>DocumentNumber:</strong> PO-12345
Existe alguma forma de contornar isto?
Solução
Eu criei uma solução para o meu próprio problema. Não é perfeito, mas está tudo bem.
Como estes são apenas viewmodels, não há lógica neles. Então eu mudei class DocumentViewModel
para interface IDocumentViewModel
e, Voilà, problema resolvido.
Eu ainda gostaria de fazer isso funcionar para herdar aulas, mas essa é mais minha teimosia do que qualquer caso de negócios.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow