我有一个Formflow对话框,其中将以下问题定义为枚举
public enum PreviousOwnerOptions
{
[Describe("Owned from new")]
[Terms("0", "new", ".*[O|o]wned from new")]
OwnedFromNew = 0,
[Terms("1", "One")]
One,
[Terms("2", "Two")]
Two,
[Terms("3", "Three")]
Three,
[Terms("4", "Four")]
Four,
[Terms("5", "Five")]
Five,
[Terms("6", "Six")]
Six,
[Describe("More than six")]
[Terms(".*More than six", "more")]
MoreThanSix
}
问题在此向用户显示...
我的问题是,如果您输入数字“ 3”作为答案,那么答案就是这个……
机器人似乎不确定我是在位置3回答还是“三”回答。我以为Terms
属性可以解决这个问题?
请问该如何解决?
答案 0 :(得分:11)
这是由于两件事的结合而发生的。
首先,您尝试在似乎是不可为空的字段上使用0枚举值。在这种情况下,将0值保留为null。来自formflow docs page:
任何数据类型都可以为空,您可以使用它来建模该字段没有值。如果表单字段基于不可为空的枚举属性,则枚举中的值0表示空(即,表示该字段没有值),并且您应将枚举值从1开始。FormFlow会忽略所有其他属性类型和方法。
第二个原因是,由于默认情况下,您将在[Terms("1", "One")]
之类的“条款”属性中使用1,2,3等数值,因此formflow会尝试将这些值与正确的枚举对齐。因此,我认为正在发生的事情是让您选择示例中使用的“ 3”,并且由于3是您的术语[Terms("3", "Three")]
之一,它为您提供了这些选择。但在由于保留了0而在零索引枚举值中,[Terms("2", "Two")] Two,
的实际枚举值为3。所以它不知道您的意思。
因此,为了使这些功能能够使用以下术语,它是这样的:
public enum PreviousOwnerOptions
{
[Terms("1", "One")]
One=1,
[Terms("2", "Two")]
Two,
[Terms("3", "Three")]
Three,
[Terms("4", "Four")]
Four,
[Terms("5", "Five")]
Five,
[Terms("6", "Six")]
Six,
[Describe("More than six")]
[Terms(".*More than six", "more")]
MoreThanSix,
[Describe("Owned from new")]
[Terms("new", ".*[O|o]wned from new")]
OwnedFromNew
}