【问题标题】:Comparing two times that are shown on form as dropdowns for hours and minutes比较表单上显示为小时和分钟下拉列表的两次时间
【发布时间】:2011-06-23 12:16:18
【问题描述】:

我一直在处理一个 .NET/C# 表单,其中包含两个由下拉列表构建的时间字段。时间 A 由小时和分钟的两个下拉菜单组成,时间 B 也由小时和分钟的两个下拉菜单组成。我需要比较两者以确保时间 A 始终大于 B。

我可以只使用 CompareValidator 来检查小时数,这有效但不考虑分钟数。所以让我们假设以下场景:

A = 11:00 B = 12:15 很好,我的验证接受了它应该做的 A = 11:15 B = 11:00 被接受,因为小时数相等,但其他情况下不应通过,因为分钟数未经验证

在使用下拉菜单的情况下,您如何确保 B 始终等于或大于 A?如果我可以更改但不允许这样做,我会这样做。

【问题讨论】:

  • 上午/下午呢?如果您使用 12 小时制时间,则下午 1:15 将出现在上午 11:30 之前。 (编辑:不确定您是打算一天中的实际时间还是只是时间跨度。以上评论仅适用于一天中的时间)
  • 另外,你打算什么时候验证?每次更改下拉列表?这会产生 UI 问题。假设我有 A=9:15 和 B=10:00。如果我想将 B 更改为 9:30,请将 10 更改为 9,然后,哎呀!收到错误消息,因为现在 9:00 早于 9:15。 (tl;dr) 不要在下拉更改时验证此内容,稍后再验证。

标签: c# asp.net validation comparevalidator


【解决方案1】:

我相信最好的方法是有一个方法来封装比较,并在内部创建两个 DateTime 值 a 和 b,然后比较它们。

这种方法将使用 UI 的值初始化 a 和 b。

【讨论】:

    【解决方案2】:

    为什么不添加一个 CustomValidator 并编写一个小的 javascript 函数来比较日期?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-22
      • 1970-01-01
      相关资源
      最近更新 更多