2010-09-08 16 views
8

Ich habe Seiten mit Sonderzeichen im Titel für die richtige Typografie, zum Beispiel sagt, es Exchange-‘ 07 Gruppen“mit einem richtigen Apostroph, kein Apostroph. Die HTML-Einheit für den Apostroph ‘UpdatePanel scheint Zeichen im Seitentitel neu zu codieren?

ist also, ich Ich habe festgestellt, dass wenn ich den Seitentitel aus VB setze, der Titel gut angezeigt wird, aber sobald ein Update-Panel aktualisiert, wird die HTML-Entity neu codiert und falsch angezeigt als "& # 8216; 07 Groups"

Also hier ist mein Code, wo ich einfach den Seitentitel, dann ein Update-Panel und eine Schaltfläche, um es zu aktualisieren ...

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

Was kann dagegen getan werden?

Antwort

0

Der Grund, warum es falsch angezeigt wird, ist, weil. Net versucht, sicher zu sein und HTML den Titel zu verschlüsseln (zur Verhinderung der verschiedenen Arten von Angriffen, die möglich sind).

In ASP.Net MVC können Sie jetzt die Html.Raw() -Methode verwenden. Soweit gerade ASP.net, weiß ich nicht, wie die Methode wäre.

+0

Es erscheint mir immer noch komisch, weil der Seitentitel nicht Teil des Update-Panels ist. Warum betrachtet .NET also auch Dinge, die nicht gesendet werden und ihre Werte ändern? Es scheint nicht von der anfänglichen Seitenladung gestört zu werden. –

+0

Nun, die Art, wie das Update-Panel tatsächlich funktioniert, besteht darin, dass es tatsächlich eine vollständige Aktualisierung der Seite auf dem Server durchführt - es verwendet nur AJAX-Effekte, um nur den Teil zu laden, den es laden soll. Ich bin nicht ganz sicher, warum, aber meine Vermutung wäre, dass, da der Titel Teil des gleichen Skript-Managers wie uxLnkDoClick ist, er ausgeführt wird und anschließend auf der Client-Seite aktualisiert wird. – MunkiPhD

0

dieses Kontroll

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

sory Ich habe C# Syntax verwendet, aber es wird höchstwahrscheinlich funktionieren> If Not Page.IsPostBack – yasirmturk

0

hinzufügen oder Sie können den Titel Eigenschaft in HTML, wenn die nicht dynamisch einfach eingestellt!

1

In Ihrem Code den Seitentitel zu setzen, wickeln Sie den Text in Server.HtmlDecode:

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

hatte ich die gleiche Situation mit dem SM (Service-Marke, wie zum Markenzeichen TM Gegensatz), die wir haben Einstellen des Seitentitels mit . Es reencodierte es beim Postback.

Was wir in dem Seitenkopf haben ist, dass wir es statisch hinzugefügt <title>My Company &#8480;</title>

wie ein Charme.