UpdatePanel, кажется, перекодирует символы в заголовке страницы? - PullRequest
8 голосов
/ 08 сентября 2010

У меня есть страницы со специальными символами в заголовке для правильной типографики, например, он говорит, что Exchange '07 Groups "с правильным апострофом, а не одной кавычкой. HTML-сущность для апострофа: ‘

Итак, я обнаружил, что если я установлю заголовок страницы из VB, заголовок будет отображаться очень хорошо, но как только панель обновлений обновит эту HTML-сущность, она перекодируется и будет отображаться неправильно как «Exchange '07 Groups»

Итак, вот мой код, в котором я просто устанавливаю заголовок страницы, затем панель обновления и кнопку для ее обновления ...

<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 ]

1 голос
/ 25 мая 2011

У меня была такая же ситуация с SM (знак обслуживания, в отличие от TM для товарного знака), в котором мы установили заголовок страницы с помощью Page.Title = "My Company &#8480";. Он перекодировал его после обратной передачи.

Что мы сделали, так это в заголовке страницы, мы статически добавили его < title >My Company &#8480;< /title >

работал как шарм.

1 голос
/ 07 февраля 2011

В вашем коде для установки заголовка страницы оберните текст в Server.HtmlDecode:

Page.Title = Server.HtmlDecode("Exchange &#8216;07 Groups")
0 голосов
/ 29 декабря 2010

добавить эту проверку

if(!Page.IsPostBack)
{
Page.Title = "Exchange &#8216;07 Groups"
}
0 голосов
/ 31 декабря 2010

или вы можете просто установить свойство title в html, если оно не динамическое!

0 голосов
/ 13 декабря 2010

Причина, по которой он отображает его неправильно, заключается в том, что .Net пытается быть безопасным, а HTML кодирует заголовок (для предотвращения возможных атак нескольких типов).

В ASP.Net MVC теперь вы можете использовать метод Html.Raw (). Что касается прямого ASP.net, я не знаю, какой метод будет.

...