2012-02-24 6 views
0

У меня есть проект динамических лесов ASP, в котором я настраиваю представление деталей. В моем источнике данных у меня есть несколько полей, содержащих HTML, и я бы хотел отобразить отображаемый HTML на странице, а не исходный HTML, как он сейчас делает. Элемент управления выглядит следующим образом.ASP: DynamicControl рендеринг HTML, а не отображение источника

<tr> 
    <td class="DDLightHeader"> 
    <asp:Label ID="lblStatementHtml" runat="server" Text="Statement" /> 
    </td> 
    <td> 
    <asp:DynamicControl ID="dcStatementHtml" runat="server" DataField="StatementHtml" /> 
    </td> 
</tr> 

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

+0

Вы уверены, что это динамический контроль, который вы должны использовать? Возможно, рассмотрим Response.Write в объявленной области страницы. Запись вставляет html, поэтому он должен отображать. – Sinaesthetic

ответ

0

чтобы решить данную проблему, мне пришлось заново создавать FieldTemplate

HTML.ascx

<%@ Control Language="C#" CodeBehind="HTML.ascx.cs" Inherits="ProductDynamicCMS.HTML" %> 

<asp:Literal runat="server" ID="Literal1" /> 

HTML.cs

using System; 
using System.Web.DynamicData; 
using System.Web.UI; 

namespace ProductDynamicCMS 
{ 
    public partial class HTML : FieldTemplateUserControl 
    { 
     protected override void OnDataBinding(EventArgs e) 
     { 
      base.OnDataBinding(e); 

      object val = FieldValue; 
      if (val != null) 
       Literal1.Text = val.ToString(); 
     } 

     public override Control DataControl 
     { 
      get 
      { 
       return Literal1; 
      } 
     } 

    } 
} 

Затем применил UIHint для этого класса на дисплей поля в детальном просмотре шаблона.

<tr> 
    <td class="DDLightHeader"> 
    <asp:Label ID="lblStatementHtml" runat="server" Text="Statement" /> 
    </td> 
    <td> 
    <asp:DynamicControl ID="dcStatementHtml" runat="server" DataField="StatementHtml" UIHint="HTML" /> 
    </td> 
</tr> 

И все было хорошо.