c# - 工具提示编码问题

标签 c# asp.net encoding .net-4.0

<asp:HyperLink ID="TestHyperLink" runat="server"></asp:HyperLink>

我有上面的超链接。我只是用下面的代码设置文本:

string textFromUser = "This is test's.";
string encodedText=HttpUtility.HtmlEncode(textFromUser);
TestHyperLink.Text = encodedText;
TestHyperLink.ToolTip = encodedText;

问题是超链接的文本正确,但工具提示显示编码字符。 enter image description here

如何使工具提示以与文本相同的方式显示?

最佳答案

您看到这个问题是因为属性值被编码了两次。

  1. '字符被编码成';
  2. &字符被编码为&

最后,输出作为 title="This is test&quot;s." 发送到浏览器。由于默认情况下属性值已被编码,您可以安全地将 Tooltip 属性设置为原始文本,并仅对 Text 属性的文本进行编码。

注意:在这种情况下,属性编码是默认执行的,但是HtmlEncode在.NET 4.0之前的版本中没有对'进行编码特点。参见 HtmlEncode and UrlEncode Now Encode Single Quotation Marks .

更新:我进行了一些谷歌搜索,发现了这个有趣的引用资料 ( Which ASP.NET Controls Automatically Encodes? ),它可能已经过时,但至少对于这个特定案例,记录的行为是你得到的。

关于c# - 工具提示编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11614632/

相关文章:

android - ffmpeg 编码音频中的持续时间和比特率不正确

c# - 将 soap XML 解析为 C# 类

c# - Linq2db.MySQL C# 中 DateTime 的 GroupBy 日期部分

asp.net - 如何从 Azure CICD 管道自动执行 web.config 和 connectionStrings.config 文件的 XML 转换?

c# - 返回列表作为数组获取的 Web 方法

asp.net - context.Response.Charset = Encoding.UTF8.ToString();

java - 如何使用 Java 查找文件的编码

c# - Azure Redis StackExchange.ASP.net MVC 中的 Redis ConnectionMultiplexer

c# - 声明前不能使用局部变量DateTime吗?

c# - 在动态生成的菜单中获取所选项目的 ID