Render是什么意思,它是作什么用的? 经常看到这个函数,但不知有何用途protected override void Render(HtmlTextWriter writer) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Control.Render 方法将服务器控件内容发送到提供的 HtmlTextWriter 对象,此对象编写将在客户端呈现的内容。protected virtual void Render( HtmlTextWriter writer);参数writer 接收服务器控件内容的 HtmlTextWriter 对象。 备注在开发自定义服务器控件时,可以重写此方法以生成 ASP.NET 页的内容。有关更多信息,请参见 ASP.NET 服务器控件中的方法。示例下面的示例重写 Render 方法,使用 HasControls 方法查看服务器控件是否在其 ControlCollection 对象(可通过 Control.Controls 属性访问)中存储了任何子控件。如果有子控件,它检查集合中的第一个服务器控件是否为文本。如果两个条件都符合,此文本就追加到 HTML 字符串中。[C#] [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")] protected override void Render(HtmlTextWriter output) { if ( (HasControls()) && (Controls[0] is LiteralControl) ) { output.Write("<H2>Your Message: " + ((LiteralControl) Controls[0]).Text + "</H2>"); }} OnPreRender是在你显示页面内容前可以自己增加显示信息 看了一下,ASP.NET应用程序的执行流程大体如下:Application_Start(Object sender, EventArgs e)Session_Start(Object sender, EventArgs e)Application_BeginRequest(Object sender, EventArgs e)Application_AuthenticateRequest(Object sender, EventArgs e)this.FrameworkInitialize();try{ base.InitRecursive(null); //递归执行Init()事件,就是当前控件及其子控件的Init()事件。 //也就是递归执行控件树的Init()是事件。Load,PreRender与之相似 //注意OnInit()是方法,而Init()是事件,这一点和Delphi不同。 if (this.IsPostBack) { this.LoadPageViewState(); this.ProcessPostData(this._requestValueCollection, true); } base.LoadRecursive(); if (this.IsPostBack) { this.ProcessPostData(this._leftoverPostData, false);//获取客户端更新 this.RaiseChangedEvents();//使类似CheckBox、TextBox等的change事件能触发 this.RaisePostBackEvent(this._requestValueCollection);//触发定制事件 } base.PreRenderRecursiveInternal(); this.SavePageViewState(); base.RenderControl(this.CreateHtmlTextWriter(this.Response.Output)); // RenderControl->Render(writer)->RenderChildren(writer) //没看懂RenderControl是如何执行的,有时间时我慢慢研究一下,不过还是请各位先指教一下。}catch (ThreadAbortException){ base.UnloadRecursive(true); return;} 这是控件的输出方法,也就是writer.write(写什么控件就输出什么)详细参考一些讲开发控件的书就明白了. datalist问题 复合控件中,子控件的样式问题 大神们!自定义控件序列化问题? (asp.net文件下载)中文文件名太长被截取或乱码问题 字符串比较! Treeview 双击 小声的问:【客户端的浏览器没有安装相应插件,如何给一个安装提示框呢,如同3721什么的?】 数据库表绑定到DATAGRID的问题:无法显示数据!!!!! 急的一个问题,大家帮忙 怎么往数据库里插入数据 在线结账:load时将DropDownList中的值选中! 我想要的效果是两个标题合在一起,并且上面再写一个cc,这种情况在datagrid中可以实现吗??
HtmlTextWriter writer
);参数
writer
接收服务器控件内容的 HtmlTextWriter 对象。 备注
在开发自定义服务器控件时,可以重写此方法以生成 ASP.NET 页的内容。有关更多信息,请参见 ASP.NET 服务器控件中的方法。示例
下面的示例重写 Render 方法,使用 HasControls 方法查看服务器控件是否在其 ControlCollection 对象(可通过 Control.Controls 属性访问)中存储了任何子控件。如果有子控件,它检查集合中的第一个服务器控件是否为文本。如果两个条件都符合,此文本就追加到 HTML 字符串中。
[C#]
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name="FullTrust")]
protected override void Render(HtmlTextWriter output) {
if ( (HasControls()) && (Controls[0] is LiteralControl) ) {
output.Write("<H2>Your Message: " + ((LiteralControl) Controls[0]).Text + "</H2>");
}
}
Session_Start(Object sender, EventArgs e)
Application_BeginRequest(Object sender, EventArgs e)
Application_AuthenticateRequest(Object sender, EventArgs e)this.FrameworkInitialize();
try
{
base.InitRecursive(null);
//递归执行Init()事件,就是当前控件及其子控件的Init()事件。
//也就是递归执行控件树的Init()是事件。Load,PreRender与之相似
//注意OnInit()是方法,而Init()是事件,这一点和Delphi不同。
if (this.IsPostBack)
{
this.LoadPageViewState();
this.ProcessPostData(this._requestValueCollection, true);
}
base.LoadRecursive(); if (this.IsPostBack)
{
this.ProcessPostData(this._leftoverPostData, false);//获取客户端更新
this.RaiseChangedEvents();//使类似CheckBox、TextBox等的change事件能触发
this.RaisePostBackEvent(this._requestValueCollection);//触发定制事件
} base.PreRenderRecursiveInternal();
this.SavePageViewState();
base.RenderControl(this.CreateHtmlTextWriter(this.Response.Output));
// RenderControl->Render(writer)->RenderChildren(writer)
//没看懂RenderControl是如何执行的,有时间时我慢慢研究一下,不过还是请各位先指教一下。
}
catch (ThreadAbortException)
{
base.UnloadRecursive(true);
return;
}