【问题标题】:Microsoft Bot framework how to validate date in form flow?Microsoft Bot 框架如何在表单流中验证日期?
【发布时间】:2023-04-10 06:42:01
【问题描述】:

我正在开发 Microsoft bot 框架,我正在通过 Form Flow 开发对话。我要求用户输入 2 个日期。我想对日期执行自定义验证逻辑,例如用户输入的当前日期应该大于用户输入的上一个日期。

以下是我对 FormFlow 的属性

[Prompt("Please enter checkin date")]  
[Pattern(@"^\d{1,2}/\d{1,2}/\d{4}$")]  
public string checkindate { get; set; }  

[Prompt("Please enter checkin date")]  
[Pattern(@"^\d{1,2}/\d{1,2}/\d{4}$")]  
public string checkoutdate { get; set; } 

我想验证 checkoutdate 应该大于 checkindate。我如何在 Bot 框架中做到这一点。

请帮我提出你的建议。

谢谢, 凯坦

【问题讨论】:

  • 您可以输入多种格式的日期。请说明您想要什么格式,尝试过什么格式,以及为什么它不适合您。
  • .Field(nameof(checkindate)) .Field(nameof(checkoutdate)) 我正在像上面一样创建表单构建器对象,但不知道如何比较 2 个日期

标签: c# botframework


【解决方案1】:

使用表单流中的 Validate 函数在 BuildForm 方法中验证您的 checkout 字段,该函数可用于验证字段。

.Field(nameof(checkoutdate),
  validate: async (state, value) =>
  {
     var result = new ValidateResult { IsValid = true, Value = values };
     //Here checkoutdate is present inside value
     //Parse your date in string to Date object
     DateTime checkindate = DateTime.Parse(state.checkindate);
     DateTime checkoutdate = DateTime.Parse(value);

     //If checkoutdate is less than checkin date then its invalid input
     if (checkoutdate < checkindate)
     {
        result.IsValid = false;
        result.Feedback = "Checkout date can't be less than checkin date";
     }
     return result;
 })

还可以考虑将checkoutcheckin 字段类型更改为DateTime,以便捕获任何类型的日期输入变化。但如果您完全按照您指定的模式需要它,请保持原样。

还可以看看Basic features of form flowAdvanced features of form flow,这应该可以帮助您熟悉表单流的概念

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-28
    • 1970-01-01
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多