Как отключить автоматический анализ символов, таких как «>», чтобы они никогда не отображались как «& qt;» при отображении в браузере? - PullRequest
2 голосов
/ 07 декабря 2011

Кто-нибудь знает, как отключить автоматический анализ символов, таких как «>», чтобы они никогда не отображались как «& qt;» при их отображении в браузере? Я думал, что это просто связано с синтаксическим анализом xml, но, похоже, это глобальная проблема, когда VS использует «интеллектуальный» синтаксический анализ строк, а иногда отображает их как фактический символ, а иногда конвертирует их. Есть предложения?

Ex. 1:

C #:

public string kmlStuff = "";
    protected void Page_Load(object sender, EventArgs e) {
        kmlStuff="]]>";
    }

Aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <div id="errorM">
        <%=kmlStuff %>
    </div>
</asp:Content>

HTML-код вывода в браузере (неверно):

<div id="errorM">
    ]]&gt;
</div>

Что я хочу показать:

<div id="errorM">
        ]]>
</div>

Ex. 2:

C #:

public string kmlStuff = "";
    protected void Page_Load(object sender, EventArgs e) {
        kmlStuff="<div></div>";
    }

Aspx:

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <div id="errorM">
        <%=kmlStuff %>
    </div>
</asp:Content>

HTML вывода браузера (верно):

<div id="errorM">
<div></div>
</div>

1 Ответ

3 голосов
/ 07 декабря 2011

Используйте это

c#

public string kmlStuff = "";
    protected void Page_Load(object sender, EventArgs e) {
        kmlStuff= Server.HtmlEncode("]]>");
    }


ASpx

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <div id="errorM">
        <%=Server.HtmlDecode(kmlStuff) %>
    </div>
</asp:Content>

** Образец:

using System;
using System.IO;
using System.Web;
using System.Web.UI;
public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    // This could mess up HTML.
    string text = "you & me > them"; // 1
    // Replace > with >
    string htmlEncoded = Server.HtmlEncode(text); // 2
    // Now has the > again.
    string original = Server.HtmlDecode(htmlEncoded); // 3
    // This is how you can access the Server in any class.
    string alsoEncoded = HttpContext.Current.Server.HtmlEncode(text); // 4
    StringWriter stringWriter = new StringWriter();
    using (HtmlTextWriter writer = new HtmlTextWriter(stringWriter))
    {
        // Write a DIV with encoded text.
        writer.RenderBeginTag(HtmlTextWriterTag.Div);
        writer.WriteEncodedText(text);
        writer.RenderEndTag();
    }
    string html = stringWriter.ToString(); // 5
    }
}

**

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...