【问题标题】:When rendering an Adaptive Card Html the data templating is not being used渲染自适应卡片 Html 时,未使用数据模板
【发布时间】:2021-04-25 00:37:09
【问题描述】:

使用 C# HTML Adaptive Card 渲染时,当我包含要渲染的模板数据时,在渲染过程中不会使用旧的 synatx 或更新的语法格式。

有人知道 .NET Html 渲染器是否支持这一点,或者是否有其他一些需要采取的方法。

渲染结果

您可以在下图中看到,这两种方法都没有获取指定为 JSON 卡有效负载一部分的数据。输出应该是

Hello from, old syntax Ernest Hemingway, new syntax ${author.name}

Hello from, old syntax {author.name}, new syntax Ernest Hemingway

示例 C#

public string Html(string cardJson)
{
    AdaptiveCardRenderer renderer = new AdaptiveCardRenderer();
    var version = renderer.SupportedSchemaVersion;
    var card = AdaptiveCard.FromJson(cardJson);
    RenderedAdaptiveCard renderedCard = renderer.RenderCard(card.Card);
    // Get the output HTML 
    HtmlTag html = renderedCard.Html;
    return html.ToString(); ;
}

样本卡负载

{
  "type": "AdaptiveCard",
  "$data": {
    "author": {
      "name": "Ernest Hemingway"
    }
  },
  "body": [
    {
      "type": "TextBlock",
      "size": "Medium",
      "weight": "Bolder",
      "text": "Adaptive Card Sample"
    },
    {
      "type": "ColumnSet",
      "columns": [
        {
          "type": "Column",
          "items": [
            {
              "type": "TextBlock",
              "weight": "Bolder",
              "text": "Hello from, old syntax {author.name}, new syntax ${author.name}",
              "wrap": true
            }
          ],
          "width": "stretch"
        }
      ]
    }
  ],
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "version": "1.2"
}

【问题讨论】:

    标签: c# html rendering adaptive-cards


    【解决方案1】:

    如果将来有人需要这样做,我找到了解决方案,我需要参考和使用 AdaptiveCards.Templating 包。

            public string Html(string cardJson)
            {
                var template = new AdaptiveCards.Templating.AdaptiveCardTemplate(cardJson);
                var cardPayload = template.Expand(new { author = new { name = "Noel" } });
                var card = AdaptiveCard.FromJson(cardPayload);
                AdaptiveCardRenderer renderer = new AdaptiveCardRenderer();
                RenderedAdaptiveCard renderedCard = renderer.RenderCard(card.Card);
                HtmlTag html = renderedCard.Html;
    
                return html.ToString(); ;
            }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      • 2018-02-20
      相关资源
      最近更新 更多