2016-05-11 104 views
0

在視圖中包含數據庫中沒有相應列的日期字段的最佳方式是什麼?例如:在視圖中包含不屬於數據模型的字段

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> 

但是我沒有在數據庫表中的列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> 
相關問題