平时我们在不用模板页的ASPX页面的后台动态添加控件是这样写的:
page.Controls.Add(gviewProduct)
今天遇到这样一个问题:在带有master模板的页面里不能用动态添加控件
原来的错误代码是这样写的:
GridView gviewProduct = new GridView();
gviewProduct.ID = "Product";
this.FindControl("cphContent").Controls.Add(gviewProduct);
提示错误:
异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
this.FindControl("cphContent").Controls.Add(gviewProduct);
修改后的正确代码:
GridView gviewProduct = new GridView();
gviewProduct.ID = "Product";
Master.FindControl("cphContent").Controls.Add(gviewProduct);
总结:this 关键字将引用类的当前实例。静态成员函数没有 this 指针。this 关键字可用于从构造函数、实例方法和实例访问器中访问成员。