在派生类中覆盖MetaData UIHint

时间:2013-06-19 16:16:07

标签: c# entity-framework inheritance

EF创建Item类,然后我创建一个带有metadataType,ItemMD的部分Item类。

在某些情况下,我想使用ItemMD中定义的UIHint,但在其他情况下,我想覆盖UIHint以使用另一个编辑器。所以我尝试创建一个继承ItemMD的派生类....但我不认为这是你应该怎么做的。它编译,但我得到不一致的行为....当我的Razor形式有5个字段时,4个使用基础ItemMD UIHint,1个使用派生类UIHint。不确定为什么不一致。

[MetadataType(typeof(ItemMD))]
public partial class Item : AuditStamps, IEntity, IAuditStamps
{
}

public partial class ItemMD
{
public int Id { get; set; }

[Display(Name = "Company Id")]
public int CompanyId { get; set; }

public string Description { get; set; }

[Display(Name = "Short Description")]
public string ShortDescription { get; set; }

[Display(Name = "Type")]
[UIHint("ItemAtrributesComboBox")]
public virtual string Attribute1 { get; set; }

[Display(Name = "Color")]
[UIHint("ItemAtrributesComboBox")]
public virtual string Attribute2 { get; set; }

[Display(Name = "Finish")]
[UIHint("ItemAtrributesComboBox")]
public virtual string Attribute3 { get; set; }

[Display(Name = "Texture")]
[UIHint("ItemAtrributesComboBox")]
public virtual string Attribute4 { get; set; }

[Display(Name = "Gauge")]
[UIHint("ItemAtrributesComboBox")]
public virtual string Attribute5 { get; set; }

public class ItemSearchFiltersViewModel : OTIS.domain.InventoryMgmt.Item.ItemMD
{
    [Display(Name = "Type:")]
    [UIHint("ItemAttributesDDL")]
    public override string Attribute1 { get; set; }

    [Display(Name = "Color:")]
    [UIHint("ItemAttributesDDL")]
    public override string Attribute2 { get; set; }

    [Display(Name = "Finish:")]
    [UIHint("ItemAttributesDDL")]
    public override string Attribute3 { get; set; }

    [Display(Name = "Texture:")]
    [UIHint("ItemAttributesDDL")]
    public override string Attribute4 { get; set; }

    [Display(Name = "Gauge:")]
    [UIHint("ItemAttributesDDL")]
    public override string Attribute5 { get; set; }
}

0 个答案:

没有答案