asp.net MVC 3 - 不能对相同的日期时间值使用不同的编辑器模板?



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

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

DateTime.chtml:

@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" })

查看上的字段编辑器

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

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

同样,在视图本身上,值是可以的,但在提交时,它将默认值传递给控制器,要么带有正确的日期和默认时间,反之亦然(这取决于首先使用的模板(

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

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

相关内容

  • 没有找到相关文章

最新更新