当失败后vaildation贴不节能ASP.NET MVC DateTime值

问题描述 投票:0回答:1

我必须输入需要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" />
c# html asp.net-mvc post asp.net-mvc-5.2
1个回答
0
投票

正如@TanvirArjel说,如果发布的“01.01.0001”你在你的看法有问题。如果您使用的日期选择器检查他们的时间格式,你可以添加到您的代码

dateformat:'dd-mm-yy'

提供它。喜欢

$('#end').datepicker({
dateformat:'dd-mm-yy'
});
© www.soinside.com 2019 - 2024. All rights reserved.