UpdatePanel似乎重新编码页面标题中的字符?

时间:2010-09-08 18:53:24

标签: asp.net character-encoding updatepanel page-title

我的标题中有特殊字符的页面用于正确的排版,例如它说Exchange '07 Groups“带有正确的撇号,而不是单引号。撇号的HTML实体是‘

所以,我发现如果我从VB设置页面标题,标题显示就好了,但是一旦更新面板更新该HTML实体被重新编码并且错误地显示为“Exchange&#8216” ; 07群“

所以这是我的代码,我只需设置页面标题,然后是更新面板,以及更新它的按钮......

<script runat="server">
    Protected Sub Page_Load(...) Handles Me.Load
       Page.Title = "Exchange &#8216;07 Groups"
    End Sub

    Protected Sub uxLnkDoClick(ByVal sender As Object, ByVal e As System.EventArgs)
        uxLitLoaded.Text = "Loaded!"
    End Sub
</script>

<!DOCTYPE html>
<html>
<head runat="server"></head>
<body>
<form id="form1" runat="server">
    <asp:ScriptManager runat="server"></asp:ScriptManager>    
    <asp:UpdatePanel runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:LinkButton runat="server" ID="uxLnkDo" OnClick="uxLnkDoClick" Text="Do Something" />
            <asp:Literal runat="server" ID="uxLitLoaded" />
        </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="uxLnkDo" />
        </Triggers>
    </asp:UpdatePanel>
</form>
</body>
</html>

可以做些什么?

5 个答案:

答案 0 :(得分:1)

在设置页面标题的代码中,将文本包装在Server.HtmlDecode:

Page.Title = Server.HtmlDecode("Exchange &#8216;07 Groups")

答案 1 :(得分:1)

我与SM(服务商标,而不是TM商标)的情况相同,我们使用Page.Title = "My Company &#8480";设置了页面标题。它在回发后重新编码。

我们所做的是在页面头部我们静态添加它 < title >My Company &#8480;< /title >

像魅力一样工作。

答案 2 :(得分:0)

它显示错误的原因是因为.Net试图安全并且HTML编码标题(用于防止可能的多种类型的攻击)。

在ASP.Net MVC中,您现在可以使用Html.Raw()方法。就直接ASP.net而言,我不知道该方法是什么。

答案 3 :(得分:0)

添加此检查

if(!Page.IsPostBack)
{
Page.Title = "Exchange &#8216;07 Groups"
}

答案 4 :(得分:0)

或者你可以简单地在html中设置title属性,如果它不是动态的!