我创建了几个自定义用户控件。
第一个是通用的-它期望将字符串标题和项目列表传递给它。
这两项都是强制性的,因此,如果这两项都不存在,则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,则内部用户控件仍然会为空标题引发异常。
这不是我期望的行为,因为我从来没有遇到过这个问题。
对于嵌入式用户控件,我还有其他事情可以停止它的处理吗?还是我必须使用其他方法来处理丢失的数据?