如何解决“呈现控件时出错”的问题2012-03-29 MSDN 龚岑在制作控件的时候容易遇到“ 呈现控件时出错”“ 发生了未处理的异常。未将对象引用设置到对象 的实例。” 这样的错误,如下图:( 也有可能仅仅只是因为未设置runat="server" 标签而导致该错误, 请先检查该项。)

但是在编译时/ 运行时也都是没有错误的。分析如图所示的情况我们称之为“ 设计时” 以区别于“ 编译时”/“ 运行时” 。设计时 :在ASP.NET 环境中也就是当我们在Visual Studio 中使用网页设计器进行编辑的时候。直接 的理解就是在ASPX 页面切换到“ 设计” 的时候。编译时 :直接的理解就是当你进行编译的时候,通常这个时候的错误是由类型检查,参数匹配等显式 可直接通过语法约束所限制的错误。运行时 :直接的理解就是当你进行预览/ 运行的时候。通常这个时候的错误则是由具体的异常,逻辑 错误所组成的。让我们分析控件在设计时的表现,我们的控件在设计时的时候,VS 智能地模拟输出控件在运行时的样 貌,控件的呈现通过了一定顺序的方法,并最终形成了当前输出。按照标准,我们应该是在Render 或 RenderContents 中对控件进行了输出的操作( 事实上其他也是可以,但我们通常也不那么做,或者说更 多的“ 呈现控件时出错” 的异常主要来自于Render 或RenderContents) 。从错误的提示“ 未将对象引用设置到对象的实例。” 从这一句话来看,也就是说,有一个或者以上 的对象的实例在没有赋初值的情况下就被使用了。让我们窥视一下我们的代码:
protected override void RenderContents(HtmlTextWriter writer)
{
   UpButton.Text = Page.Server.HtmlDecode(UpButton.Text);
   DownButton.Text = Page.Server.HtmlDecode(DownButton.Text);
   base.RenderContents(writer);
}因为该控件在设计的时候需要有一个向上的按钮和一个向下的按钮,分别需要用两个特殊的标点符号 向上和向下,而这两个符号需要通过设置如下所示的代码编号才可以正确地被浏览器呈现:
private string upButtonText = "∧";
private string downButtonText = "∨";