MS Teams MessageCard长文本截断不换行问题解决方案咨询
解决方案
你可以通过以下几种方式解决长文本溢出不换行的问题:
插入零宽空格实现无感知断行
针对无分隔符的长路径、长字符串,可以在每20-30个字符的位置插入零宽空格\u200B,该字符不可见,不会破坏原文内容,复制时也不会带出额外字符,同时会让Teams的渲染引擎识别为可断行位置,自动换行不溢出。
示例处理代码:public static string InsertZeroWidthSpace(string input, int interval = 25) { if (string.IsNullOrEmpty(input) || input.Length <= interval) return input; var sb = new StringBuilder(); for (int i = 0; i < input.Length; i += interval) { sb.Append(input.Substring(i, Math.Min(interval, input.Length - i))); if (i + interval < input.Length) sb.Append('\u200B'); } return sb.ToString(); }调用时把错误信息、长路径用这个方法处理后再赋值给value即可。
用代码块包裹长内容开启滚动
因为你已经在卡片配置里开启了markdown = true,只需要把长文本用markdown代码块语法包裹,Teams渲染时会自动给代码块加滚动条,无论多长的内容都可以滚动查看,不需要手动处理断行:
修改你的JSON构造代码里的错误消息赋值部分即可:new { name = "Error Message", value = $"```\n{result}\n```" }替换为自适应卡片(Adaptive Card)获得更好的排版支持
旧版MessageCard的排版能力限制较多,你可以改用微软现在主推的自适应卡片,将长文本放在TextBlock组件中,显式设置"wrap": true,还可以配合"maxLines"属性控制默认显示行数,超长内容可以配合Action.ShowCard做折叠展开,完全避免溢出问题。
内容的提问来源于stack exchange,提问作者Tyler Dahle
相关产品推荐
相关产品推荐

