我想使用 FormFlow 对话框,但我看到的所有示例都提示用户从 Enum 中做出选择。如果这些值来自数据库怎么办?
问问题
1481 次
2 回答
2
如果要为 FormFlow 中的字段动态设置值,则必须使用动态定义的字段。
基本上,您必须使用field.AddDescription和field.AddTerms函数在SetDefine函数中获取数据(从 SQL DB 或其他任何地方)。
:)
于 2016-04-25T10:07:09.503 回答
2
这是一个演示如何在表单流中实现数据库中的动态字段。只需将 StateClass 替换为您的班级名称,将 ProperyName 替换为您的属性名称。不幸的是,此时您在 Microsoft Bot Framework 的官方文档中还没有找到有关 FieldReflector 的任何信息。
public static IForm<StateClass> BuildForm()
{
return new FormBuilder<StateClass>()
.Message("Start Message")
.Field(new FieldReflector<StateClass>(nameof(ProperyName))
.SetType(null)
.SetDefine(async (state, field) =>
{
List<string> list = QueryFromDatabase();
foreach (string item in list)
field
.AddDescription(item , item )
.AddTerms(item , item );
return true;
}))
.AddRemainingFields()
.OnCompletionAsync(async (context, state) =>
{
await context.PostAsync("Finish message");
})
.Build();
}
于 2017-09-14T14:05:10.180 回答