禁用Asp.Net中的子用户控件

时间:2018-08-21 13:26:41

标签: asp.net user-controls

我创建了几个自定义用户控件。

第一个是通用的-它期望将字符串标题和项目列表传递给它。

这两项都是强制性的,因此,如果这两项都不存在,则Page_Load事件将引发异常。

protected void Page_Load(object sender, EventArgs e)
{
    Title.ThrowNullOrEmpty("Title");  // custom extension method
    List.ThrowNullOrEmpty("List");

    Build();
}

第二个用户控件嵌入了前一个控件,因此它负责传递数据。

例如,我将代码放在Page_Load事件中以确保(我认为这将是一个圆满的结局),如果列表是空的,像这样:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Items != null && Items.Any())
        {
            Build();
        }
        else
        {
            ucListWidget.Visible = false;
        }
    }

但是,我错误地认为在预渲染之前隐藏子控件就足够了,但似乎还不够。

如果未调用Build()方法并传递Title和Items,则内部用户控件仍然会为空标题引发异常。

这不是我期望的行为,因为我从来没有遇到过这个问题。

对于嵌入式用户控件,我还有其他事情可以停止它的处理吗?还是我必须使用其他方法来处理丢失的数据?

0 个答案:

没有答案