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

ASP.NET中Web.sitemap文件的尖括号无法正常输出如何处理?

问题根因

Web.sitemap解析器会自动将节点属性中编写的HTML实体转义为原始字符,你在title属性中写的&lt;/&#60;这类实体,读取到Title字段时已经被转换为<字符。直接绑定到asp:HyperLink的Text属性时,服务器控件的默认编码逻辑未生效,导致<被直接输出到页面,被浏览器识别为HTML标签开头,因此出现无效的<t>标签。

可行解决方案

方案1:修改HyperLink绑定逻辑(推荐)

不要将Title绑定到Text属性,改为在HyperLink标签内部手动编码输出内容,可完全控制编码行为:

<asp:HyperLink runat="server" NavigateUrl='<%# Eval("Url") %>'>
    <%# Server.HtmlEncode(Eval("Title").ToString()) %>
</asp:HyperLink>

也可以直接使用原生HTML的a标签,逻辑更直观无服务器控件隐藏逻辑干扰:

<a href='<%# Eval("Url") %>'><%# Server.HtmlEncode(Eval("Title").ToString()) %></a>

方案2:显式开启HyperLink的文本编码

如果希望继续使用Text属性绑定,可显式设置EncodeText="true"强制控件对Text内容做HTML编码,适配不同版本.NET的默认行为差异:

<asp:HyperLink runat="server" 
    NavigateUrl='<%# Eval("Url") %>' 
    Text='<%# Eval("Title") %>'
    EncodeText="true">
</asp:HyperLink>

两种方案都不需要修改Web.sitemap中的原有写法,也不需要额外写字符串替换逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:08