使用表单获取用户输入

上一篇显示 Markdown 内容

现在,我们知道如何呈现基本 Markdown 内容,让我们尝试利用 自适应卡片的强大功能来显示更详细的内容。 这对于创建表单或显示更复杂的内容非常有用。

使用窗体

命令面板支持自适应卡片,这是创建丰富交互式内容的方法。 这对于创建表单或显示更复杂的内容非常有用。

可以使用 IFormContent 接口在命令面板中创建卡片(请参阅用于工具包实现的 FormContent )。 这允许你提供自适应卡片 JSON,命令面板将为你呈现它。 用户提交表单后,Command Palette 会调用你的表单的 SubmitForm 方法,传递表单中的 JSON 数据和输入内容。

可以使用自适应卡方案设计器来创建有效负载。 可以在那设计您的卡片,然后将 JSON 数据负载复制到扩展程序中。

有关使用窗体和内容页面的完整示例,请查看 SamplePagesExtension/Pages/SampleContentPage.cs。 需要注意的一些简短事项:

  • 将表单的 TemplateJson 属性设置为自适应卡片的 JSON 有效负载。 (这是自适应卡片设计器中的“卡片有效负载编辑器”值)
  • FormContentDataJson 属性设置为要用于填写卡片模板的数据。 (这是自适应卡片设计器中的“示例数据编辑器”值)。 这是可选的,但可以使制作卡片更容易。
  • 实现 SubmitForm 方法来处理表单提交。 当用户提交表单时,将调用此方法,并将传递表单的 JSON 有效负载。
public override CommandResult SubmitForm(string payload)
{
    var formInput = JsonNode.Parse(payload)?.AsObject();
    if (formInput == null)
    {
        return CommandResult.GoHome();
    }

    // retrieve the value of the input field with the id "name"
    var name = formInput["name"]?.AsString();
        
    // do something with the data

    // and eventually
    return CommandResult.GoBack();
}

当然,你可以以任何方式组合和搭配 IContent。 例如,可以先对帖子正文使用块级 markdown,并在旁边放置一个用于回复帖子的 FormContent