我必须输入需要2个日期的形式。其中一个必须是前一后。我有一个自定义验证设置处理这个问题。如果日后无效,验证触发并显示错误消息的预期。如果日期,然后更正为有效日期,它就会被发送到服务器为“01/01/0001”。修正日期不使它的服务器。
模型:
[Display(Name = "Start")]
public DateTime Start { get; set; }
[Display(Name = "End")]
[CustomTimeRangeEnd(ErrorMessage = "End Date is required and must be a valid date after Start Date")]
public DateTime End { get; set; }
验证器:
public class CustomTimeRangeEndAttribute : ModelAwareValidationAttribute
{
static CustomTimeRangeEndAttribute()
{
Register.Attribute(typeof(CustomTimeRangeEndAttribute));
}
public override bool IsValid(object value, object container)
{
var model = (ICustomTimeRange)container;
if (value == null) return false;
DateTime dt;
var validdt = DateTime.TryParse(value.ToString(), out dt);
if (!validdt) return false;
if (dt < model.Start) return false;
return true;
}
视图:
@Html.LabelFor(x => x.Start, new { @class = "control-label" })<br />
<input type="date" name="Start" id="Start" />
@Html.LabelFor(x => x.End, new { @class = "control-label" })<br />
<input type="date" name="End" id="End" />
正如@TanvirArjel说,如果发布的“01.01.0001”你在你的看法有问题。如果您使用的日期选择器检查他们的时间格式,你可以添加到您的代码
dateformat:'dd-mm-yy'
提供它。喜欢
$('#end').datepicker({
dateformat:'dd-mm-yy'
});