<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;
问题是超链接的文本是正确的,但工具提示显示编码的字符。
如何以与文字相同的方式显示工具提示?
答案 0 :(得分:8)
您看到了这个问题,因为属性值被编码了两次。
'
字符编码为'
; &
字符编码为&
。最后,输出将作为title="This is test&quot;s."
发送到浏览器。由于默认情况下属性值已经被编码,因此您可以安全地将Tooltip
属性设置为原始文本,并仅编码Text
属性的文本。
注意:在这种情况下,默认情况下会执行属性编码,但4.0之前的.NET版本中的HtmlEncode
不会对'
字符进行编码。请参阅HtmlEncode and UrlEncode Now Encode Single Quotation Marks。
更新:我做了一些谷歌搜索,发现这个有趣的参考文献(Which ASP.NET Controls Automatically Encodes?)可能已经过时但至少对于这个特定情况,所记录的行为是你得到的。< / p>
答案 1 :(得分:1)
如前所述,ASP.NET控件的ToolTip属性将自动编码输出/渲染的值。
这意味着安全将工具提示设置为纯文本,因为页面将在渲染时清理文本。
Label1.ToolTip = "Some encoded text < Tag >"
将HTML输出呈现为:
<span title="Some encoded text < Tag >"></span>
如果您需要使用已编码的文本,则可以改为设置title属性:
Label1.Attributes("title") = "Some encoded text < Tag >"
将HTML输出呈现为:
<span title="Some encoded text < Tag >"></span>
答案 2 :(得分:0)
看起来工具提示不需要像文本一样进行编码。
尝试使用textFromUser
而不是encodedText
直接设置工具提示。