如何在 Orchard 创建自定义查询筛选器时验证日期

本文关键字:筛选 验证 日期 查询 自定义 Orchard 创建 | 更新日期: 2023-09-27 18:33:25

我需要在Orchard中创建一个自定义过滤器表单,其中包含两个字段:DateFrom 和 DateTo。我能够使用以下代码使用两个文本框字段创建它:

public void Describe(dynamic context)
    {
        Func<IShapeFactory, dynamic> form =
            shape =>
            {
                var f = Shape.Form(
                    Id: "EventRangeForm",
                    _DateFrom: Shape.TextBox(
                        Id: "DateFrom", Name: "Date From",
                        Title: T("Events from date"),
                        Description: T("Events from date"),
                        Classes: new[] { "text medium" }
                        ),
                    _DateTo: Shape.TextBox(
                        Id: "DateTo", Name: "Date To",
                        Title: T("Events to date"),
                        Description: T("Events to date"),
                        Classes: new[] { "text medium" }
                        ));
                return f;
            };
        context.Form("EventRangeForm", form);
    }

如果可能的话,我想确保用户输入具有特定格式的日期。在视图中,我通常会将日期选择器附加到文本框,但在这里我无法这样做。是否有比在 ApplyFilter 方法中编写整个代码来验证用户可以在文本框上写入的任何可能输入更有效的解决方案?

如何在 Orchard 创建自定义查询筛选器时验证日期

public class DateTimeValidation : FormHandler {
   public override void Validating(ValidatingContext context) {
      if (context.FormName == "EventRangeForm") {
         var min = context.ValueProvider.GetValue("DateFrom");
         //validate...
         context.ModelState.AddModelError("DateFrom", "You did it wrong!");
      }
   }
}

您可以使用客户端验证和漂亮的日期时间选择器创建自己的表单视图。或者,您可以创建一个包含在形状中的脚本,以通过jquery将文本框更改为日期时间选择器?