我遇到一个问题,即使邮件中有实体,表单流仍会提示我输入票号。 我在这里将TicketNumber声明为int。 我也试过将TicketNumber声明为int?
我尝试了变量2,其中传递了数字。但即便如此,当我提示时,它会要求我显示12345作为当前选择的票号。 我们在下面观察中看到的空分是否有问题? 我有其他更大的形式有多个字符串字段,它工作正常。
变化1:
var ticketStatusParametersForm = new FormDialog<TicketStatusParameters>(new TicketStatusParameters(), this.MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities);
变化2:
var ticketNumber = 12345;
var ticketStatusParametersForm = new FormDialog<TicketStatusParameters>(new TicketStatusParameters { TicketNumber = ticketNumber}, this.MakeTicketStatusParametersForm, FormOptions.PromptInStart, result.Entities);
public class TicketStatusParameters
{
[Prompt("Please enter a ticket number {||}")]
[Describe("Ticket Number")]
[Template(TemplateUsage.NotUnderstood, "Please enter a valid ticket number. I did not understand \"{0}\"")]
public int TicketNumber { get; set; }
}
答案 0 :(得分:1)
自动绑定不适用于Prebuilt实体,因为FormFlow使用EntityRecommendation.Type
值在Form模型中查找具有相同名称的字段。您需要使用变体#2。
关于变体#2中描述的问题,我认为问题是你的提示具有{||}
模式元素,这对于不可枚举的字段没有意义。
尝试仅使用[Prompt("Please enter a ticket number")]
答案 1 :(得分:0)
我有一个具有可空字段的测试代码,并且当该字段作为跳过该字段的状态的一部分传入时。除非你传递FormOptions.PromptFieldsWithValues,否则我不知道你是如何得到这种行为的。你把班级改成了这个,对吧?
public class TicketStatusParameters
{
[Prompt("Please enter a ticket number {||}")]
[Describe("Ticket Number")]
[Template(TemplateUsage.NotUnderstood, "Please enter a valid ticket number. I did not understand \"{0}\"")]
public int? TicketNumber { get; set; }
}