我正在创建一个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中类中的属性。
我希望我能更好地解释。
答案 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
{
}
即使从数据库刷新模型,也会应用此功能。