我的MVC3应用程序中有很多表单需要用户输入日期。
给定日期的要求可能是许多情况之一,即带有时间的日期,日期,过去的日期,过去的日期和时间,未来的日期,日期和未来的时间等...
所以,目前我根据需要提供不同的课程。例如....
$("input.input-date-past").datepicker({ numberOfMonths: 1, showButtonPanel: true, maxDate: -0 });
...配置日期选择器,将用户选择限制在过去的日期。
这一切都运转正常,但我想知道是否有更好的方法。
我认为我可以为视图模型属性提供一个属性,该属性将定义所需的输入类型。即
[Required]
[PastDate]
public DateTime SomeDateFromThePast { get; set; }
[Required]
[FutureDate]
public DateTime SomeDateFromTheFuture { get; set; }
[Required]
[FutureDateTime] // Requires a time to be given i.e "01/01/2012 09:00"
public DateTime SomeDateTimeFromTheFuture { get; set; }
etc..
然后在带有@model System.DateTime
的Shared / EditorTemplate中,它将询问给予属性的属性并根据需要设置类。
听起来不错吗?还是臭吗?
如果确定,您如何询问给予该属性的属性?
如果它很臭,还有其他任何建议吗?
非常感谢,
ETFairfax。
答案 0 :(得分:0)
您可以将自己的钩子编写到ASP.NET MVC的不引人注目的验证中,以写入data-
属性。
本教程可以帮助您入门。
http://www.codeproject.com/Articles/275056/Custom-Client-Side-Validation-in-ASP-NET-MVC3
答案 1 :(得分:0)
您是否考虑过编写自定义DateTime验证方法(如果您搜索Google,有很多教程)?这样,您可以只查看DateTime.Now()项,具体取决于您是要查看过去还是将来。
关于这是否是一个好主意的问题,我认为从某种意义上说,你应该在服务器端检查你的输入是好的。但是,从可用性的角度来看,我认为没有客户端验证是个好主意。如果您不希望用户在将来选择日期,那么我认为您限制他们将来选择日期的能力是好的。