【问题标题】:Greater than date validation in data annotation that accepts null date接受空日期的数据注释中的大于日期验证
【发布时间】:2020-08-05 20:57:08
【问题描述】:

我在这里看到了Greater Than or Equal To Today Date validation annotation in MVC3 的答案,并尝试使用我的 .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() 注释正常工作?

【问题讨论】:

  • 你已经看过这个了吗? - docs.microsoft.com/en-us/aspnet/core/mvc/models/…
  • 是的,我似乎在做正确的事,但它没有采取行动。
  • 基本检查,您确定此调用是从客户端触发的吗?您能从浏览器的网络标签中确认吗?
  • 好电话。我刚刚检查并确认它从我的网络选项卡中的 ValidateDateEqualOrGreater 收到了 200 响应
  • 能否请您确认一下请求和响应负载?我们正在查看的数据是否有任何机会为空(可能是正在发送到服务器的数据)? 200的情况下响应体是什么?

标签: c# asp.net-core asp.net-core-mvc data-annotations


【解决方案1】:

我认为您忘记了 RemoteAttribute 定义中的 HttpMethod ="POST"。 ;)

【讨论】:

  • 我确实...添加了它,但它的行为仍然相同。感谢您的来信。
  • RemoteAttribute 使用 ajax 来验证您的数据。你能在浏览器控制台上看到什么吗?
  • 控制台上什么都没有。无论我输入什么日期(或没有),都会引发验证错误,但它永远不会到达控制器。
  • 这可能和你的“DateTimeOffset”类型有关,你可以尝试更改它只是为了测试吗?
  • 我所有的日期都是 DateTimeOffset 所以这是一个要求。
【解决方案2】:

我脸上有大鸡蛋。我的断点设置不正确。该功能失败,因为空白日期为“01/01/0001”而不是空,我必须考虑这一点。它现在正在工作。很抱歉进行了防火练习,并感谢您提供的所有帮助。

工作功能:

[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);
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多