【发布时间】:2020-11-05 18:57:04
【问题描述】:
我有一个预订创建视图,用户可以在其中选择带有日期和时间的开始和结束时间。但是我希望有一个字段选择日期和两个字段作为开始和结束时间(只有时间,没有日期),所以在字段中选择的日期是结束和开始 DateTime 的日期。
现在我有三个 DateTime 值和 HTML 标签 DataType.Date 和 DateTime.Time,所以它在用户视图中已经“有效”。但是它将开始和结束时间的日期设置为 Date.Now,所以我必须为开始和结束创建一个新的 DateTime 值,并使用日期字段中的日期。这行得通,但是有没有更简单、更好的方法来做到这一点?还是我必须更改使用 DateTime.MinValue/MaxValue 初始化值的方式?
我的预订舱位:
private DateTime day;
private DateTime start = DateTime.MinValue;
private DateTime end = DateTime.MaxValue;
[DataType(DataType.Date)]
[Required]
public DateTime day //+get set methods
[DataType(DataType.Time)]
[Required]
public DateTime start //+get set methods
[DataType(DataType.Time)]
[Required]
public DateTime end //+get set methods
我在控制器中的 Create 方法的一部分:
public IActionResult Create(Booking b)
{
DateTime temp = b.end;
newRequest.end = DateTime.MaxValue; //necessariy so it won't throw an exception, because start time has to be before end time
b.start = new DateTime(b.day.Year, b.day.Month, b.day.Day, b.start.Hour, b.start.Minute, b.start.Second);
b.end = new DateTime(b.day.Year, b.day.Month, b.day.Day, temp.Hour, temp.Minute, temp.Second);
}
【问题讨论】:
-
对于您的视图模型,您不应该使用
DateTime?吗? -
我已经考虑过了,但是预订分配算法会复杂得多,因为现在您可以按日期时间将其排序在一个列表中,否则您每天需要多个排序列表.
标签: c# asp.net-mvc