我有一个非常简单的控件,我试图渲染看起来像这样:
using System;
using System.Web;
using System.Web.UI;
namespace CORE.BusinessObjects.Web.Controls
{
public class TestControl : Control
{
protected override void Render(HtmlTextWriter writer)
{
writer.Write("Hello from TestControl!");
}
}
}
我按以下方式调用控件:
<%@ Register TagPrefix="Custom"
Namespace="CORE.BusinessObjects.Web.Controls" %>
<Custom:TestControl ID="testControl" runat="server" Visible="true">
</Custom:TestControl>
我做错了吗?我也没能运行我在网上找到的任何对照样本。什么都没有执行。我只能执行控件的构造函数。我尝试覆盖的所有其他方法(如Render()
或CreateChildControls()
都没有执行。
感谢。
编辑:我忘了提到控件包含在带有母版页的页面上。控件实际上在Master页面中运行正常,但不在它之外。
答案 0 :(得分:3)
您应该尝试以下方法:
一个。继承自System.Web.UI.Control.WebControl
类。
湾确保创建控件库,并在相关的Web项目中编译和引用自定义控件库。 (可选)将其添加到工具箱并从那里将其拖到窗体上。这也应该在一步中添加引用。
℃。确保您的控件声明具有Assembly
属性,该属性指向引用的控件程序集的名称:
<%@ Register TagPrefix="Custom" Assembly="CORE.BusinessObjects" Namespace="CORE.BusinessObjects.Web.Controls" %>
<Custom:TestControl ID="testControl" runat="server" Visible="true" />
答案 1 :(得分:1)
尝试继承CompositeControl或WebControl