2015-01-13 1 views
0

Я храню HTML в базе данных и пытаюсь отобразить его на странице с помощью литерального элемента управления. Проблема в том, что литерал не передает код и вместо этого просто отображает разметку на веб-странице. Я проверил HTML, и он отлично работает при добавлении непосредственно на страницу, но не работает, когда установлен как свойство текста литералов.Литеральный контроль, не отображающий отображаемый HTML

Я делал это много раз раньше, на лице я повторно использовал код, но по какой-то причине отображается только разметка.

Буквальное на странице:

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server"> 

</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="ContentArea" Runat="Server"> 
    <asp:Literal ID="Literal1" runat="server" Mode="PassThrough"></asp:Literal> 
</asp:Content> 

VB Код:

Private Sub LoadContent() 

     Dim strConnectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString 

     Dim conn As SqlConnection = New SqlConnection 

     conn.ConnectionString = ConfigurationManager _ 
       .ConnectionStrings("ConnectionString").ConnectionString 

     Dim cmd As SqlCommand = New SqlCommand 

     cmd.CommandText = ("select HTML from Pages where " & _ 
          "PageName like @SearchText + '%'") 

     cmd.Parameters.AddWithValue("@SearchText", "TheShop") 
     cmd.Connection = conn 
     Dim sb As StringBuilder = New StringBuilder 
     conn.Open() 
     Dim sdr As SqlDataReader = cmd.ExecuteReader 
     While sdr.Read 
      sb.Append(sdr("HTML")) _ 
       .Append(Environment.NewLine) 
     End While 
     conn.Close() 
     Literal1.Text = sb.ToString 


    End Sub 

Это содержимое sb.ToString перед добавлением к буквальным:

&lt;p&gt;&lt;span style="color:#FF0000"&gt;revergveraer&lt;/span&gt;&lt;/p&gt; 

&lt;p&gt;&lt;span style="color:#FF0000"&gt;&lt;img alt="" src="http://pngimg.com/upload/fish_PNG1156.png" style="height:133px; width:200px" /&gt;rgergerg&lt;/span&gt;&lt;/p&gt; 

Это HTML, который выводится и отображается как разметка литералом:

<p><span style="color:#FF0000">revergveraer</span></p> <p><span style="color:#FF0000"><img alt="" src="http://pngimg.com/upload/fish_PNG1156.png" style="height:133px; width:200px" />rgergerg</span></p> 
+1

Я не могу воспроизвести, я вижу рыбу. Вы взяли последний фрагмент из базы данных или с отображаемой веб-страницы? Можете ли вы либо опубликовать точное значение из БД, либо поставить точку останова и опубликовать значение SB.ToString? Могут быть символы, которые мы не можем видеть, которые вызывают вашу проблему. – Steve

+0

@Steve Я добавил содержимое sb.tostring. Литерал, похоже, преобразует его в правильный HTML, но он не отображает его, он просто показывает код на веб-странице. Я также попробовал аналогичный подход, используя панель, добавив к ней ярлык, и он дал тот же результат. – connersz

ответ

4

Ваш HTML кодируется и должен быть декодирован до того, как он будет отображаться через Литерал. Это легко с Server.HtmlDecode.

Literal1.Text = Server.HtmlDecode(sb.ToString) 

Однако, я хотел бы предложить вам НЕ использовать Environment.NewLine, как вы в вашем коде, но вместо этого использовать:

sb.append("<br/>")