我的MVC UI上的Date字段名为“startDate”,用户使用jquery日期选择器选择日期。因为我想验证所选日期不应该是过去2个月和未来2个月。
我写了下面的代码来验证日期。
public sealed class DateAttribute : DataTypeAttribute
{
/// <summary>
/// Initializes a new instance of the <see cref="EmailAddressAttribute"/> class.
/// </summary>
public DateAttribute() : base(DataType.Date)
{
}
/// <summary>
/// Checks that the value of the data field is valid.
/// </summary>
/// <param name="value">The data field value to validate.</param>
/// <returns>
/// true always.
/// </returns>
public override bool IsValid(object value)
{
DateTime inputDate = Convert.ToDateTime(value, CultureInfo.CurrentCulture);
if (inputDate.Date >= DateTime.Now.Date.AddMonths(-2) && inputDate.Date <= DateTime.Now.Date.AddMonths(2))
return true;
return false;
}
}
但问题是,它用于验证日期字段的服务器。我怎样才能与客户验证相同。
谢谢, -Naren
答案 0 :(得分:0)
限制datepicker上的可用日期是否足够?
使用jquery ui的datepicker,使用minDate和maxDate选项非常简单,其他大多数都有类似的功能。
答案 1 :(得分:0)
function IsValid(object) {
var theDate = new Date(object);
var pointfrom = (theDate.getFullYear() * 100) + (theDate.getMonth());
var today = new Date();
if (pointfrom > (today.getFullYear() * 100) + (today.getMonth()) + 2) return false;
if (pointfrom < (today.getFullYear() * 100) + (today.getMonth()) - 2) return false;
return true;
}
我将年份提高了100,从而避免了跨年度比较
然后在你的SPAN id =“x”onBlur =“IsValid(this.value)”&gt; 2001-01-01
麦克
答案 2 :(得分:-7)
您是否尝试过使用System.ComponentModel.DataAnnotations
属性中的标准Range validator?类似的东西:
[Range(typeof(DateTime),
DateTime.Now.Date.AddMonths(-2).ToShortDateString(),
DateTime.Now.Date.AddMonths(2).ToShortDateString(),
ErrorMessage = "Value for {0} must be between {1} and {2}")]
public DateTime StartDate { get; set; }
值得一试!