0

假设在我的模型中我有public DateTime Date {get;set;}有财产。在视图中,它应该在几个文本框中表示 - 一个用于日期,另一个用于时间。

我创建了两个不同的编辑器模板

日期时间.cshtml:

@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker", style = "width:90px"  })

和 TimeOnly.cshtml

@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortTimeString() : string.Empty), new { @class = "timePicker", style = "width:90px" })

以及视图上的 EditorFor 字段

@Html.EditorFor(x => x.Date)
@Html.EditorFor(x => x.Date,"TimeOnly")

现在,问题在于传递给控制器​​的 Date 属性的实际值带有默认时间 12:00。如果我们更改 EditorFor 字段的顺序,日期也会发生同样的情况 - 在应用 TimeOnly 模板后,日期会立即回滚到默认日期值,尽管它的时间部分保持正确。

再次在视图本身上,这些值是可以的,但是在提交时它将默认值传递给控制器​​,或者使用正确的日期和默认时间,反之亦然(这取决于首先使用的模板)

当然,我总是可以通过向模型添加另一个属性来分离日期和时间,但是有更好的解决方案吗?

4

1 回答 1

1

Scott Hanselman 在博客中介绍了如何在这种情况下使用自定义模型绑定器。

于 2011-07-05T18:33:38.040 回答