Os atributos de componente de componente exagerados (ou seja, DisplayName) não funciona como esperado

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

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?

Foi útil?

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
scroll top