重写ComponentModel属性(即DisplayName)不能按预期工作

时间:2010-09-02 12:53:27

标签: c# asp.net-mvc-2 system.componentmodel

我有两个班级:

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

有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:0)

我想出了解决自己问题的方法。它并不完美,但没关系。

由于这些只是ViewModel,因此它们中没有逻辑。所以,我将class DocumentViewModel更改为interface IDocumentViewModel,并将voilà更改为问题。

我仍然希望能够继承课程,但这比任何商业案例都更加顽固。