2016-05-11 74 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> 
相关问题