Introduction to templating

Templating allows you to combine an adaptive card and a model (C# object). Template is a JSON schema. Model is any C# object.

Templating works through the TemplatedAdaptiveCard-component:

<TemplatedAdaptiveCard Schema="@Schemas.CustomerTemplated" Model="customer"></TemplatedAdaptiveCard>

@code{
    Customer customer = new Customer() { FirstName = "Templated", LastName = "Customer" };
}

Syntax

The syntax for template is:

{{ PropertyName }}

Given the following model:

    public class WeatherForecast
    {
        public DateTime Date { get; set; }

        public int TemperatureC { get; set; }

        public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);

        public string Summary { get; set; }
    }

The syntax for displaying property TemperatureC is:

        {
          "type": "Column",
          "width": "auto",
          "items": [
            {
              "type": "TextBlock",
              "text": "{{ TemperatureC }}",
              "size": "extraLarge",
              "spacing": "none"
            }
          ]
        },

The templating support in Adaptive Cards for Blazor is a custom-built solution, based on the Scriban templating language. You can use all the features of the Scriban in your Adaptive Cards, like built-in functions and if/else/for/while functionality.

Note: Adaptive Cards for .NET contains support for some built-in functions. The built-in functions use the same syntax as Scriban. This can cause issues. The recommended approach is to use Scriban's functions.