从对话框中调用表单 [英] Calling Forms from Dialogs

查看:119
本文介绍了从对话框中调用表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个简单的表格

 [Serializable]
class CreateNewLeadForm
{
    public string FirstName;
    public string LastName;
    public static IForm<CreateNewLeadForm> BuildForm()
    {

        return new FormBuilder<CreateNewLeadForm>()
            .Message("Lets create a New Lead")
            .Field(nameof(FirstName))
            .Field(nameof(LastName))
            .Build();

    }
};

还有一个简单的对话框

public class GreetDialog : IDialog<object>
{        
    public async Task StartAsync(IDialogContext context)
    {

        context.Wait(MessageReceivedAsync);
    }
    public   async Task MessageReceivedAsync(IDialogContext context, IAwaitable<Message> argument)
    {
       context.Wait(MessageReceivedAsync);
    }  
}  

如何从主对话框本身调用启动FormDialog"?总的来说,我们如何在对话框中创建新对话框?

How do I call a Initiate a FormDialog from the main Dialog itself? In general how do we intiate new dialogs within a Dialog?

推荐答案

要启动FormDialog,您可以执行以下操作:

In order to initiate a FormDialog you can just do:

var myform = new FormDialog<CreateNewLeadForm>(new CreateNewLeadForm(), CreateNewLeadForm.BuildForm, FormOptions.PromptInStart, null);

context.Call<CreateNewLeadForm>(myform, FormCompleteCallback);

看看 PizzaBot 例如.

要在对话框中启动新对话框,您可以执行以下操作:

To initiate new dialogs within a Dialog you can do:

  • context.Call传递新对话框的实例和完成回调(如表格所示)
  • 上下文.转发,您可以在其中将消息转发到子对话框

context.Forward(新的MyChildDialog(),ResumeAfterChildDialog,消息,CancellationToken.None);

context.Forward(new MyChildDialog(), ResumeAfterChildDialog, message, CancellationToken.None);

这篇关于从对话框中调用表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆