我们在我们的机器人中使用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();
}
}
测试结果: