我正在尝试构建一个具有表单流对话框的机器人。我必须在表单构建器中创建一个字段Optional
。我通过在class属性中给出[Optional]
注释来完成。但它不起作用。通过Form继续提示该字段。我怎么能控制它?
form = new FormBuilder<myClass>()
.Message("Welcome")
.Field(nameof(xxx))
.Field(nameof(yyy),//make this field optional, if value is there then validate. But should not prompt if no value.
validate: async (state, value) =>
{
}
我的班级
[Serializable]
public class myClass
{
[Prompt("I didnt get you")]
public string xxx{ get; set; }
[Optional]
public string yyy{ get; set; }
}
答案 0 :(得分:0)
尝试
[Optional]
public string yyy{ get; set; }
答案 1 :(得分:0)
在官方文档中,自定义属性[可选]仅用于可为空的枚举属性...在这种情况下,它显示标记为“无首选项”的最后一个选项。
对于字符串,默认提示符将显示您的问题,后跟“(当前选择:无首选项),表示它已填充默认值”No Preference“,但用户仍需要回答问题。
如果您需要根据特定规则跳过问题,可以实现活动属性,如下例所示:
public static IForm<YourStateClass> Build()
{
return new FormBuilder<SandwichOrder>()
.Field(nameof(PropertyName), active: (state) => {
// here goes your code that need to return a boolean where true will show the field and false will skip
})
.Build();
}