为一个属性指定一个嵌套类的DataType?

时间:2016-07-19 12:03:47

标签: c# asp.net asp.net-mvc entity-framework asp.net-mvc-5

我正在创建一个MVC5网站,并创建了一个Viewmodel,以便能够访问我的View中的多个模型/类。 Viewmodel包含EntityFramework生成的类。它看起来像这样:

public class PersoneelskaartVm
{

    public PERSONEEL Personeel { get; set; }
    public GEBRUIKERS Gebruikers { get; set; }
    public List<SYSGROEP> LidVanSysgroep { get; set; }
    public List<RELSGRPS> LidVanRelsgrps { get; set; }
    public PERSONEEL_UREN UrenPerJaar { get; set; }
    public PERSOON_OVERW OverwerkPerJaar { get; set; }
    public CBOALGEMEEN Status { get; set; }
    public List<RELAFDELING> LidVanRelafdeling { get; set; }
    public List<PERSOON_VAKGROEP> LidVanPersoonvakgroep { get; set; }
    public List<VAKGROEP> LidVanVakgroep { get; set; }
    public List<competentieEntiteit> LidVanPersoonCompetentie { get; set; }
    public List<competenties> LidVanCompetenties { get; set; }

    //Volle lijsten:
    public List<CBOALGEMEEN> AlleBurgStaten { get; set; }
    public List<OVERWERK> AlleOverwerk { get; set; }
    public List<ONREG_TOESLAG> AlleOrt { get; set; }
    public List<CBOALGEMEEN> AlleStatussen { get; set; }
    public List<CBOALGEMEEN> AlleContractvormen { get; set; }
    public List<FUNCTIE> AlleFuncties { get; set; }
}

传统上我使用[DataType(DataType.Date)]作为DateTimes,我只需要日期。但是我怎样才能在Personeel中为一个属性实现这个目标?在Personeel中有一个名为gebd的属性,因此我想为Personeel.gebd设置数据类型。

同样适用于名为Personeel的{​​{1}}中的属性,我始终使用CreditCard

但是我无法更改自动生成的EF类。

//编辑:因为我不能很好地解释自己,所以我试着更好地解释自己。

例如,如果我的网页有这个模型:

[Datatype(DataType.CreditCard)]

和PERSOON定义如下:

public class ExampleViewModel{
    public PERSOON Person{get;set;}
}

我无法改变PERSOON课程。

如果我访问ExampleViewModel.Person.gebd

,html文本字段中的输出将是:04-05-1985 00:00:00

如果我添加DataType标记([DataType(DataType.Date)]),输出将为:04-05-1985。所以没有时间作为后缀。

但是因为我的Viewmodel中嵌套了模型,我如何在Viewmodel中应用DataType标记来操作Viewmodel中类中的属性。

我希望我能更好地解释。

1 个答案:

答案 0 :(得分:0)

您可以重新定义/覆盖自动生成的模型

public class ExampleModelMetadata
{
    [Display(Name = "Birthday")]
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime Birthday {get;set;}
}

[MetadataTypeAttribute(typeof(ExampleModelMetadata))]
public partial class ExampleModel
{
}

即使从数据库刷新模型,也会应用此功能。