c# - 包含内容的 Web 用户控件

标签 c# asp.net web-controls webusercontrol

用法:

    <uc1:WindowControl ID="Window_ExpoNews" runat="server" Height="265px" Title="Expo News"
    Width="100%">              
    <ContentTemplate> 
        This content will show in the center cell of this user control.
        <br />
        I can even add real controls.
        <asp:TextBox ID="TextBox1" runat="server" />
        <br />
        Good times.
    </ContentTemplate>
</uc1:WindowControl> 

控件的来源:

 <asp:Panel ID="Panel2" 
           runat="server">                 
       </div>
</asp:Panel>
<asp:PlaceHolder runat="server" ID="BodyControlSpace"/>

代码隐藏:

public partial class Componants_WebUserControl : System.Web.UI.UserControl{

private ITemplate _ContentTemplate;

[PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate ContentTemplate
{
    get { return _ContentTemplate; }
    set { _ContentTemplate = value; }
}

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    _ContentTemplate.InstantiateIn(BodyControlSpace); 
} 

public Unit Width
{
    get {return Panel1.Width;}
    set {Panel1.Width = value;}
}

public Unit Height
{
    get {return Panel1.Height;}
    set {Panel1.Height = value;}
}

public string Title
{
    get {return lblTitle.Text;}
    set {lblTitle.Text = value;}
}

问题是它给了我以下错误:
你调用的对象是空的。 说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。

异常详细信息:System.NullReferenceException:对象引用未设置到对象的实例。

来源错误:

第 21 行:{
第 22 行:base.OnInit(e);
第 23 行:_ContentTemplate.InstantiateIn(BodyControlSpace);
第 24 行:}
第 25 行:

最佳答案

终于我找到了,没有人告诉我我可以在那里添加“如果”:

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    if (_ContentTemplate != null)
         _ContentTemplate.InstantiateIn(BodyControlSpace); 
} 

关于c# - 包含内容的 Web 用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455712/

相关文章:

c# - 无法让 SSIS 脚本任务工作

c# - 将 json 反序列化为动态/匿名类 asp.net

asp.net - 数据绑定(bind)列表框和设置 css 类

asp.net - 自定义 ASP .NET 控件中的必需属性

c# - 选中复选框后如何运行方法

c# - 为什么匿名类型在 C# 中是不可变的?

c# - 存储在通用集合中后重载和多态行为发生变化

c# - 为什么 System.Drawing.Image.GetThumbnailImage 需要一个未使用的委托(delegate)?

c# - 如何在 &lt;script runat ="server"> 内的逐字字符串文字中转义字符串 &lt;/script&gt;

c# - 可点击的 Web 控件,ASP.NET