我有一个ASP动态脚手架项目,我在其中自定义详细信息视图。在我的数据源中,我有一些包含HTML的字段,我想在页面上显示呈现的HTML,而不是像当前那样显示源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 :(得分: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>
一切都很好。