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

ASP.NET运行时无法为按钮设置含特殊字符文本问题求助

运行时为ASP.NET Button设置含特殊字符文本的解决方法

核心解决思路

不要手动对Button的Text属性做Html编码,直接赋值原始的带特殊字符的字符串即可。

原因分析

  • ASP.NET的Label控件默认不会自动对Text属性进行Html编码,所以手动调用HtmlEncode后,浏览器能正确解析显示特殊字符。
  • 而Button控件在渲染到页面时,会自动对Text属性执行Html编码操作。如果提前手动编码,就会导致双重编码(比如é被再次编码成é),最终浏览器显示的是编码后的实体字符,而非预期的特殊字符。

修改后的代码示例

protected void Page_Load(object sender, EventArgs e)
{
    string text = "élèves"; // 使用原始带特殊字符的字符串,不手动编码
    // Label若需防XSS则手动编码,否则可直接赋值
    Label1.Text = System.Net.WebUtility.HtmlEncode(text);
    // Button直接赋值原始字符串,控件会自动处理编码
    Button1.Text = text;
}

如果无需考虑XSS风险,Label也可以直接赋值原始字符串:

protected void Page_Load(object sender, EventArgs e)
{
    string text = "élèves";
    Label1.Text = text;
    Button1.Text = text;
}

补充说明

设计时直接设置Button的Text为élèves能正常显示,是因为设计阶段的Html实体标记会被ASP.NET先解析为对应的字符,渲染时再执行一次正确的编码,不会触发双重编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 03:07:38