2012-02-24 2 views
0

私は詳細ビューをカスタマイズしているASP動的スキャフォールディングプロジェクトを持っています。私のデータソースでは、HTMLを含むいくつかのフィールドがあり、現在行っているソースHTMLではなくページにレンダリングされたHTMLを表示したいと考えています。コントロールは次のようになります。ASP:DynamicControlレンダリングではなく、ソースを表示

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

私はこのコントロールのデフォルトのビューは明らかに私は自分のサイト上でHTMLをレンダリングするために使用リテラル(同じベース制御、その後の何物でもありませんText.ascxあるので、続行する方法について混乱しています。私は、 HTMLをレンダリングする新しいFieldTemplateを作成して快適ですが、どのように私は、そのソースビューを表示するというし、レンダリングする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> 

すべてが順調でした。