You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FormFlow中如何获取表单完成后的值?完成前如何提取字段?

FormFlow表单值获取与实时字段提取问题解答

我来帮你解答这两个FormFlow的问题,都是实际开发里常遇到的场景:

1. 表单完成后如何获取表单值?

FormFlow的核心是基于你定义的表单实体类(比如你代码里包含姓名、电话的类),当表单完成后,你可以直接拿到这个类的实例,通过它的属性来获取所有字段值。

举个具体的实现例子:假设你的表单类是UserInfoForm,包含Name和Phone属性,在处理表单完成的逻辑里,你可以这样获取值:

// 启动表单的示例代码
var formDialog = FormDialog.FromForm(UserInfoForm.BuildForm, FormOptions.PromptInStart);
await context.Forward(formDialog, AfterFormCompleted, context.Activity, CancellationToken.None);

// 表单完成后的回调方法
private async Task AfterFormCompleted(IDialogContext context, IAwaitable<UserInfoForm> result)
{
    // 获取表单完成后的实体实例
    var userInfo = await result;
    // 直接访问属性拿到对应值
    string userName = userInfo.Name;
    string userPhone = userInfo.Phone;
    
    // 接下来就可以用这些值做后续处理了
}

简单来说,表单完成后,结果就是你定义的表单类的实例,直接访问它的公共属性就能拿到所有填写的字段值。

2. 表单完成前提取字段值存入字典并传递给邮件方法

FormFlow的所有已填写字段值,其实都实时存储在你的**表单类实例(也就是FormFlow里的state对象)**中。如果你想在表单完成前(比如用户填完某一个字段后)就提取值,可以通过自定义字段的验证、设置回调,或者表单的步骤钩子来实现。

比如,你可以在定义表单字段的时候,给特定字段添加Validate回调,在用户输入该字段后立即获取当前已填写的所有值:

public static IForm<UserInfoForm> BuildForm()
{
    return new FormBuilder<UserInfoForm>()
        .Field(nameof(UserInfoForm.Name))
        .Field(nameof(UserInfoForm.Phone), validate: async (state, value) =>
        {
            // state就是当前的表单实例,包含已经填写的Name字段值
            // value是当前用户输入的Phone值
            var formDataDict = new Dictionary<string, object>
            {
                ["姓名"] = state.Name,
                ["电话"] = value
            };
            
            // 调用你的发送邮件方法,把字典传进去
            await SendEmailMethod(formDataDict);
            
            // 返回验证结果(这里假设输入有效)
            return new ValidateResult { IsValid = true, Value = value };
        })
        // 其他字段...
        .Build();
}

如果你想在每一步都能获取所有已填写的字段,也可以在表单的Message步骤或者Next回调里访问state对象,从中提取需要的字段值存入字典。本质上,只要你能拿到当前的表单实例(state),就能随时获取已经填写的任何字段值。

内容的提问来源于stack exchange,提问作者JohnSDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:09:50