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

ASP.NET Core Razor视图本地化输出引号截断问题求助

解决Razor视图中本地化文本含单引号导致HTML属性截断的问题

这个问题很常见,根源就是你用单引号包裹了title属性值,而法语翻译文本里的单引号和属性的闭合单引号冲突了——浏览器会把第一个遇到的单引号当成属性值的结束标记,后面的内容自然就被截断了。给你几个实用的解决方案:

方法1:改用双引号包裹title属性

这是最简单直接的办法,HTML属性本身支持单引号或双引号包裹,把代码里的单引号换成双引号就行:

<abbr title="@Localizer["AnswerTip"]"> 
  <label asp-for="MyModelField" class="control-label"></label> 
</abbr>

这样即使本地化文本里有单引号(比如法语的L'aide),双引号作为属性的边界,不会和文本内的单引号冲突,浏览器能完整识别整个title值。

方法2:对本地化文本进行HTML属性编码

如果因为某些原因必须用单引号包裹属性,那可以通过Html.AttributeEncode方法把文本里的特殊字符转成HTML实体(比如单引号会转成&#39;),确保属性值不会被截断:

<abbr title='@Html.AttributeEncode(Localizer["AnswerTip"])'> 
  <label asp-for="MyModelField" class="control-label"></label> 
</abbr>

这种方法更通用,不管文本里有哪种HTML特殊字符(比如双引号、尖括号),都能被正确转义,避免解析错误。

不推荐的方法:在资源文件中转义单引号

虽然可以在翻译资源里把单引号写成\'或者'',但这种方式不建议——翻译人员不需要关心HTML的转义规则,而且会让资源文件的内容变得不直观,后续维护也麻烦。转义逻辑应该放在视图层处理,保持资源文件的纯净性。

你可以根据自己的场景选第一种或第二种方法,亲测都能解决你的问题~

内容的提问来源于stack exchange,提问作者Jean-Marc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:03