You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

特殊字符导致ValidationAttribute.FormatErrorMessage报格式错误如何修复

根因分析

ValidationAttribute.FormatErrorMessage 方法底层依赖 string.Format() 处理错误信息,string.Format() 会默认把 {、} 识别为格式化占位符的边界标识。你使用的错误信息中包含未转义的 {} 字符,不符合 string.Format() 的格式要求,因此抛出格式错误。

修复方案

方案1:直接转义错误信息中的花括号

把错误信息里的单个左花括号 { 替换为两个左花括号 {{,单个右花括号 } 替换为两个右花括号 }} 即可,修改后的错误信息如下:

ErrorMessage = @"Your characters should be in: ^_{{}}~";

转义后的花括号会被 string.Format() 识别为普通文本,不会再触发占位符解析逻辑。

方案2:调用格式化方法前动态转义

如果不希望修改原始错误信息的存储内容,可以在调用 FormatErrorMessage 前先对错误信息做转义处理:

// 转义错误信息中的花括号
ErrorMessage = ErrorMessage.Replace("{", "{{").Replace("}", "}}");
// 再执行格式化
string formattedError = FormatErrorMessage(GetDisplayName());

方案3:跳过FormatErrorMessage调用

如果你的错误信息不需要用到内置的占位符替换逻辑,完全可以直接拼接错误信息,避免触发 string.Format 的解析逻辑:

string displayName = GetDisplayName();
string formattedError = $"{displayName} {ErrorMessage}";

内容的提问来源于stack exchange,提问作者Ashok Yaganti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:30:00