我们在我们的机器人中使用FormFlow。 FormFlow具有允许用户键入字段名称并切换到给定字段的功能。假设我们有一个这样的模型类

    public class SampleModelClass
    {
        public string FirstField { get; set; }
        public string SecondField { get; set; }
    }


当要求用户输入FirstField时,用户可能会实际键入“ first field”,从而导致再次询问FirstField问题。有什么方法可以禁用此功能,并将“第一字段”作为FirstField的值吗?重命名FirstField可以,但是我们正在寻找更好的解决方案

最佳答案

当要求用户输入FirstField时,用户可能会实际键入“ first field”,从而导致再次询问FirstField问题。有什么方法可以禁用此功能,并将“第一字段”作为FirstField的值吗?重命名FirstField可以,但是我们正在寻找更好的解决方案


您可以尝试使用Terms attribute(带有正则表达式)来定义用于将用户输入与字段或字段中的值进行匹配的术语列表,以下示例供您参考。

[Serializable]
public class SampleModelClass
{
    [Terms(@"^[.*]$")]
    public string FirstField { get; set; }

    [Terms(@"^[.*]$")]
    public string SecondField { get; set; }

    public static IForm<SampleModelClass> BuildForm()
    {
        return new FormBuilder<SampleModelClass>()
                .Message(async (state) => { return new PromptAttribute($"Welcome to the form bot!"); })
                .Build();


    }
}


测试结果:

c# - 当用户提交字段名称作为值时,FormFlow禁用字段之间的切换-LMLPHP

10-06 15:25