2016-07-19 27 views
1

我正在做一個MVC5網站,並創建了一個視圖模型,以便能夠訪問在我看來多個模型/班。 Viewmodel包含由EntityFramework生成的類。它看起來像這樣:指定的propertyinside嵌套類數據類型?

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)]爲DateTime是否在那裏我只需要的日期。但是我怎樣才能達到這個Personeel的財產?在Personeel一個名爲gebd財產,所以我想設置一個數據類型Personeel.gebd

這同樣適用於所謂CreditCardPersoneel屬性在那裏我總是用[Datatype(DataType.CreditCard)]

但我不能改變自動生成的EF類。

//編輯:因爲我無法解釋自己很好,生病試圖解釋自己的稍高些。

在舉例來說,如果我有這樣的模型,我的網頁:

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

和PERSOON的定義是這樣的:

public class PERSOON{ 
    public DateTime gebd {get;set;} 
} 

,我不能改變PERSOON類。

在HTML一個文本框的輸出將是:1985年4月5日00:00:00如果我訪問ExampleViewModel.Person.gebd

如果我添加的數據類型標記([數據類型(DataType.Date) ]),輸出將是:04-05-1985。所以沒有時間作爲後綴。

但是因爲我的Viewmodel嵌套了Models,所以我該如何在ViewModel中應用DataType標記來操作Viewmodel中類中的屬性。

我希望我解釋的更好。

+1

的'DataType'註釋使用'DataType'枚舉 - 這是給範圍在HTML'input'領域是有用的。這是你想要做的嗎?你將無法添加自己的'DataType'(另外,'Personeel.gebd'是一個屬性,而不是一個類型)。你不知道你在問什麼/試圖做什麼。如果我可能會建議查看自定義屬性,並且創建自定義HTML助手(如果這是(鬆散)),那麼您試圖獲得什麼? –

+0

你想做什麼?你期望的最終結果是什麼? – Shyju

+2

視圖模型不應包含屬於數據模型的屬性。 –

回答

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 
{ 
} 

你從數據庫刷新機型甚至後這將被應用。

+0

我編輯了我的問題,因爲這對我來說可能是不夠的。 – Maarten