Anular los atributos de ComponentModel (es decir, DisplayName) no funciona como se esperaba
-
26-09-2019 - |
Pregunta
Tengo dos clases:
public class DocumentViewModel
{
public virtual string DocumentNumber { get; set; }
}
public class PurchaseOrderViewModel : DocumentViewModel
{
[DisplayName("PO Number")]
public override string DocumentNumber { get; set; }
}
Y una vista:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Onyx.Web.Models.PurchaseOrderViewModel>" %>
<strong><%: Html.LabelFor(i => i.DocumentNumber) %>:</strong> <%: Model.DocumentNumber %>
Espero que eso renderice
<strong>PO Number:</strong> PO-12345
Pero en realidad hace
<strong>DocumentNumber:</strong> PO-12345
¿Hay alguna forma de evitar esto?
Solución
Se me ocurrió una solución a mi propio problema. No es perfecto, pero está bien.
Dado que estos son solo modelos de vista, no hay lógica en ellos. Entonces, cambié class DocumentViewModel
a interface IDocumentViewModel
y, voilà, problema resuelto.
Todavía me gustaría que esto funcione para heredar clases, pero esa es más mi terquedad que cualquier caso de negocios.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow