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

ASP.NET资源文件嵌入HTML链接失效问题求助

解决ASP.NET资源文件中嵌入HTML链接的问题

嘿,我来帮你搞定这个问题!你现在遇到的情况很典型:用CDATA包裹HTML的话,链接显示成纯文本;去掉CDATA,内容直接消失。这根源在于ASP.NET默认对资源内容的处理方式——要么把HTML当纯文本输出,要么被XML解析器误判成标签吃掉。下面给你两个实用的解决办法:

方法一:保留CDATA,用Literal控件解析HTML

别再直接用<%$ Resources:CultureDependent, BannerTextMain %>输出了,换成Literal控件,关键是要设置它的Mode为PassThrough(或者根据.NET版本设Encode=False),让控件直接把资源里的HTML渲染出来,而不是当成纯文本:

<asp:Literal ID="litBannerText" runat="server" Mode="PassThrough" Text="<%$ Resources:CultureDependent, BannerTextMain %>"></asp:Literal>

要是习惯后台代码绑定也可以这么写:

litBannerText.Text = Resources.CultureDependent.BannerTextMain;
litBannerText.Mode = LiteralMode.PassThrough;

这样CDATA里的链接就能正常点击啦。

方法二:转义HTML字符,不用CDATA

如果你不想用CDATA,就把HTML标签里的<和>转成XML实体&lt;和&gt;,这样XML解析器就不会把它们当成标签处理了,资源文件改成这样:

<data name="BannerTextMain" xml:space="preserve">
  <value>Test String, &lt;html&gt;&lt;body&gt; &lt;a href="/vacatures"&gt;link!&lt;/a&gt;&lt;/body&gt;&lt;/html&gt;</value>
</data>

之后还是用Literal控件输出(别用Label,它会自动编码),同样能渲染出可点击的链接。

小提醒

  • 绝对别用Label控件来输出这些内容!Label默认会把HTML编码,不管你怎么弄都会显示成纯文本链接。
  • 如果链接地址以后可能变动,建议把URL单独放到一个资源项里,页面里再拼接内容,这样维护起来更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:19:38