2016-07-19 2 views
1

私はMVC5ウェブサイトを作っていて、ビュー内の複数のモデル/クラスにアクセスできるようにViewModelを作成しました。 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)]を使用:それはこのようになります。しかし、私はどのようにPersoneelのプロパティでこれを達成できますか? Personeelgebdというプロパティなので、Personeel.gebdのデータ型を設定したいと思います。

同じことが、私が自動生成されたEFクラスを変更することはできませんしかし、私は常に[Datatype(DataType.CreditCard)]

を使用CreditCard呼ばPersoneel内のプロパティのためです。

//私は自分自身を非常にうまく説明することができなかったので、自分自身を幾分良く説明しようとしました。例では

私は私のウェブページのために、このモデルがある場合:

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

をしてPERSOONは、このように定義されています

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

と私はPERSOONクラスを変更することはできません。

HTMLでテキストフィールドでの出力は次のようになります。1985年4月5日夜12時00分00秒私は、データ型のマークアップを追加した場合、私はExampleViewModel.Person.gebd

にアクセスした場合([データ型(DataType.Date) ]))、出力は04-05-1985になります。だからサフィックスとして時間がない。

私のViewmodelにはモデルがネストされているため、そのViewModelにDataTypeマークアップを適用して、Viewmodel内のクラスにあるプロパティを操作するにはどうすればよいですか。

私はより良い説明ができることを願っています。

+1

'DataType'アノテーションはHTMLの' input'フィールドにスコープを与えるのに便利な 'DataType' enumを使います。これはあなたがやろうとしていることですか?独自の '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

関連する問題