C# 当用户提交字段名作为值时,FormFlow禁止在字段之间切换

C# 当用户提交字段名作为值时,FormFlow禁止在字段之间切换,c#,botframework,formflow,C#,Botframework,Formflow,我们正在bot中使用FormFlow。FormFlow有一个功能,允许用户键入字段的名称,并切换到给定字段。假设我们有一个这样的模型类 public class SampleModelClass { public string FirstField { get; set; } public string SecondField { get; set; } } 当要求用户输入FirstField时,用户可能会实际键入“FirstField”

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

    public class SampleModelClass
    {
        public string FirstField { get; set; }
        public string SecondField { get; set; }
    }
当要求用户输入FirstField时,用户可能会实际键入“FirstField”,从而再次询问FirstField的问题。有没有办法禁用此选项并将“first field”作为FirstField的值?重命名FirstField会起作用,但我们正在寻找更好的解决方案

当要求用户输入FirstField时,用户可能会实际键入“FirstField”,从而再次询问FirstField的问题。有没有办法禁用此选项并将“first field”作为FirstField的值?重命名FirstField会起作用,但我们正在寻找更好的解决方案

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

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


    }
}
[可序列化]
公共类SampleModelClass
{
[条款(@“^[.]$”)
公共字符串第一个字段{get;set;}
[条款(@“^[.]$”)
公共字符串第二个字段{get;set;}
公共静态表单BuildForm()
{
返回新的FormBuilder()
.Message(异步(状态)=>{返回新的PrompAttribute($“欢迎使用表单bot!”);})
.Build();
}
}
测试结果: