SetRenderMethodDelegate 方法
今天看代码发现一个有趣的方法。
System.Web.UI.Control 类的 SetRenderMethodDelegate()
这个方法允许控件接受一个委托来定制自身的 Render 行为,这样,在子控件里就可以重新定义父控件的 Render 方法,很灵活。IronPython for ASP.NET 的实现就利用到这个特性了。
例子:
System.Web.UI.Control 类的 SetRenderMethodDelegate()
这个方法允许控件接受一个委托来定制自身的 Render 行为,这样,在子控件里就可以重新定义父控件的 Render 方法,很灵活。IronPython for ASP.NET 的实现就利用到这个特性了。
例子:
public class SnippetControl: BaseCodeControl {
protected override void OnInit(EventArgs e) {
base.OnInit(e);
// 修改其父控件的 Render 方法
this.Parent.SetRenderMethodDelegate(new System.Web.UI.RenderMethod(SnippetControl.RenderMethod));
}
internal static void RenderMethod(HtmlTextWriter writer, Control container){
// ....
}
}
protected override void OnInit(EventArgs e) {
base.OnInit(e);
// 修改其父控件的 Render 方法
this.Parent.SetRenderMethodDelegate(new System.Web.UI.RenderMethod(SnippetControl.RenderMethod));
}
internal static void RenderMethod(HtmlTextWriter writer, Control container){
// ....
}
}