Freigeben über


Benutzereingaben mit Formularen erfassen

Zurück: Anzeigen von Markdowninhalten

Nachdem wir nun wissen, wie Sie grundlegende Markdown-Inhalte präsentieren, versuchen wir, etwas Anspruchsvolleres anzuzeigen, indem wir die Leistungsfähigkeit von Adaptive Cards nutzen. Dies ist nützlich zum Erstellen von Formularen oder zum Anzeigen komplexerer Inhalte.

Arbeiten mit Formularen

Befehlspalette unterstützt adaptive Karten, die eine Möglichkeit zum Erstellen umfangreicher, interaktiver Inhalte sind. Dies kann zum Erstellen von Formularen oder zum Anzeigen komplexerer Inhalte hilfreich sein.

Sie können eine Karte in der Befehlspalette mit der IFormContent-Schnittstelle erstellen (siehe FormContent für die Toolkitimplementierung). Auf diese Weise können Sie den JSON-Code für adaptive Karten bereitstellen, der von der Befehlspalette gerendert wird. Wenn der Benutzer das Formular sendet, ruft die Befehlspalette die SubmitForm-Methode in Ihrem Formular mit der JSON-Nutzlast und eingaben aus dem Formular auf.

Adaptive Kartennutzlasten können mit dem Designer für adaptive Karten erstellt werden. Sie können Ihre Karte dort entwerfen und dann die JSON-Nutzlast in Ihre Erweiterung kopieren.

Ein vollständiges Beispiel für die Verwendung von Formularen und Inhaltsseiten finden Sie weiter.SamplePagesExtension/Pages/SampleContentPage.cs Einige kurze Punkte, die Sie beachten müssen:

  • Legen Sie die TemplateJson-Eigenschaft Ihres Formulars auf die JSON-Nutzlast Ihrer adaptiven Karte fest. (Dies ist der Wert für „CARD PAYLOAD EDITOR“ im Designer für adaptive Karten.)
  • Legen Sie die DataJson-Eigenschaft Ihres FormContent auf die Daten fest, die Sie zum Ausfüllen Ihrer Kartenvorlage verwenden möchten. (Dies ist der Wert "SAMPLE DATA EDITOR" im Designer für adaptive Karten). Dies ist optional, kann aber das Erstellen von Karten vereinfachen.
  • Implementieren Sie die SubmitForm-Methode , um die Formularübermittlung zu verarbeiten. Diese Methode wird aufgerufen, wenn der Benutzer das Formular sendet und die JSON-Nutzlast des Formulars übergeben wird.
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();
}

Natürlich können Sie IContent auf die gewünschte Weise mischen und abgleichen. Sie können z. B. zuerst ein Block-Markdown für den Textkörper eines Beitrags verwenden und neben dem Beitrag ein FormContent haben, um auf den Beitrag zu antworten.