2016-05-11 5 views
0

DBに対応する列を持たないビューに日付フィールドを含める最も良い方法は何ですか?例:ビュー内にデータモデルの一部ではないフィールドを含める

Model: 
[DataType(DataType.Date)] 
[Display(Name = "Review Date")] 
[Required] 
public DateTime? ReviewDate { get; set; } 


View: 
@model Model.Employee 
... 
<div> 
@Html.LabelFor(model => model.ReviewDate) 
@Html.EditorFor(model => model.ReviewDate) 
@Html.ValidationMessageFor(model => model.ReviewDate}) 
</div> 

DBテーブルにReviewDateという列はありません。私は、他の処理のためにユーザーからの日付入力を収集するためにこれをビューに持つ必要がありますが、それは自分のデータモデルの一部ではありません。私はモデルクラスにこれを含めて、検証などのために属性を制御できるようにしました。

これにはどのような方法が最適ですか?私はモデルからこれを削除し、ビュー内に孤立したHTMLの日付フィールドを持つだけですか?もしそうなら、どのようにして検証がそのフィールドで引き続き機能するようにすることができますか?

答えて

1

特定のビューに必要なプロパティを含むViewModelを作成するだけです。

public class EmployeeEditViewModel 
{ 
    [DataType(DataType.Date)] 
    [Display(Name = "Review Date")] 
    [Required] 
    public DateTime? ReviewDate { get; set; } 

    public EmployeeModel Employee { get; set; } 
} 

次に、あなたのカミソリであなたは、これらの線に沿って何かを行うことができます:

@model ViewModel.EmployeeEditViewModel 
... 
<div> 
    @Html.LabelFor(model => model.ReviewDate) 
    @Html.EditorFor(model => model.ReviewDate) 
    @Html.ValidationMessageFor(model => model.ReviewDate) 
</div> 
<div> 
    @Html.LabelFor(model => model.Employee.SomeValue) 
    @Html.EditorFor(model => model.Employee.SomeValue) 
    @Html.ValidationMessageFor(model => model.Employee.SomeValue) 
</div> 
関連する問題