在适配卡中显示号码

Display number in adaptive card

我有以下简易卡片:

    {
        "type": "AdaptiveCard",
        "version": "1.0",
        "body": [
            {
                "type": "TextBlock",
                "text": "{data}"
            }
        ],
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
    }

当我将以下数据应用于卡片时(值为数字),文本框为空:

{
"data":11111
}

有了文字,我可以看到卡片中的数据:

{
"data":"11111"
}

这不是代码问题,这是它在设计器中的样子。我是否遗漏了什么,是否有一种文本框类型可以显示数字,或者这是设计使然,我必须将所有数字字段更改为文本?

我猜您正在为此使用 Adaptive Cards Templating。请记住,这 (a) 仅供预览,(b) 只是 一个 选项,用于构建自适应卡片。基本上,归根结底,卡片只是一串 JSON 文本,因此您可以通过 3 种主要方式创建它:

  1. 像现在一样使用模板
  2. 自己进行字符串替换(例如 var card = '..."text": "##Number##"...' 然后 card = card.Replace("##数字##", formattedNumberValue)
  3. 使用强类型选项,例如 AdaptiveCards Nuget C# 包

所以,我建议,如果使用模板无法做到这一点,请多看看上面的选项 2 或 3。我对此进行了更多描述 here,并提供了一些指向 C# 和 Node 示例的链接。

希望对您有所帮助

这是我们希望在发布前解决的预览版限制(称为类型强制)。作为另一种解决方法,您可以在绑定表达式之后包含一个 space ,这将强制它成为一个字符串。看下面的例子,注意 {data}

之后的 space

   {
        "type": "AdaptiveCard",
        "version": "1.0",
        "body": [
            {
                "type": "TextBlock",
                "text": "{data} "
            }
        ],
        "$schema": "http://adaptivecards.io/schemas/adaptive-card.json"
    }

您现在可以使用函数 formatNumber(value, decimalplaces)

例如:

{
  "type": "TextBlock",
  "text": "${formatNumber(somenumber), 2}"
}

您可以在这里阅读模式: https://docs.microsoft.com/en-us/azure/bot-service/adaptive-expressions/adaptive-expressions-prebuilt-functions?view=azure-bot-service-4.0#formatNumber