Проверка больше даты в аннотации данных, которая принимает нулевую дату - PullRequest
0 голосов
/ 05 августа 2020

Я видел ответ на этот вопрос здесь Аннотации проверки даты «Больше или равно сегодняшнему дню» в MVC3 и пытался использовать вариант Remote, предложенный в моем приложении. Net Core 3.1. Я установил точку останова в своем действии, но он никогда не попадает в нее, просто бросая проверку снова и снова, независимо от введенной даты (или пустой). Вот что я пробовал:

В качестве аннотации к моей модели данных:

[Remote("ValidateDateEqualOrGreater", "AccountViewer", HttpMethod="POST", ErrorMessage = "Date cannot be prior to today's date")]
public DateTimeOffset? PostDate {get; set; }

Внутри моего контроллера:

[HttpPost]
public JsonResult ValidateDateEqualOrGreater(DateTimeOffset Date)
{
    if (Date == null || Date >= DateTimeOffset.UtcNow.Date)
    {
        return Json(true);
    }
    return Json(false);
}

Не похоже, что код вызывается вообще, так как я не бью ни одной из точек останова в нем. Что еще нужно сделать, чтобы аннотация Remote () заработала?

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

У меня на лице большое яйцо. Моя точка останова установлена ​​неправильно. Функция не удалась, потому что пустая дата обозначается как «01/01/0001», а не null, и мне пришлось это учитывать. Теперь работает. Приносим извинения за стрельбу и спасибо за помощь.

Рабочая функция:

[HttpPost]
        public JsonResult ValidateDateEqualOrGreater(DateTimeOffset Dt)
        {
            DateTime nulltime = new DateTime(0001, 1, 1, 0, 0, 0);

            var nulldt = new DateTimeOffset(nulltime, new TimeSpan(0, 0, 0));
            if (Dt == null || Dt == nulldt || Dt >= DateTimeOffset.UtcNow.Date)
            {
                return Json(true);
            }
            return Json(false);
        }
0 голосов
/ 06 августа 2020

Думаю, вы забыли HttpMethod ="POST" в определении RemoteAttribute. ;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...