Атрибуты компонентного компонента переопределения (т. Е. DisplayName) не работает должным образом

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

Вопрос

У меня есть два класса:

public class DocumentViewModel
{
    public virtual string DocumentNumber { get; set; }
}

public class PurchaseOrderViewModel : DocumentViewModel
{
    [DisplayName("PO Number")]
    public override string DocumentNumber { get; set; }
}

И вид:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Onyx.Web.Models.PurchaseOrderViewModel>" %>

<strong><%: Html.LabelFor(i => i.DocumentNumber) %>:</strong> <%: Model.DocumentNumber %>

Я ожидаю, что оказывать

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

но это на самом деле делает

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

Есть ли способ обойти это?

Это было полезно?

Решение

Я придумал решение своей собственной проблемы. Это не идеально, но все в порядке.

Поскольку это просто просмотр моделе, в них не логика. Итак, я изменил class DocumentViewModel к interface IDocumentViewModel и, воил, проблема решена.

Я все еще хотел бы получить эту работу для наследства классов, но это больше моего упрямства, чем любое деловое дело.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top