Значение ASP.NET MVC DateTime не сохраняется при публикации после неудачной проверки - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть форма, требующая ввода 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" />

1 Ответ

0 голосов
/ 05 февраля 2019

Как сказал @TanvirArjel. Если он опубликован как "01.01.0001", у вас проблемы с вашим представлением.Если вы используете DatePicker, проверьте их формат времени, который вы можете добавить к своему коду

dateformat:'dd-mm-yy'

, чтобы предоставить его.как

$('#end').datepicker({
dateformat:'dd-mm-yy'
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...