Render是什么意思,它是作什么用的?

时间:2022-11-08 02:43:12
经常看到这个函数,但不知有何用途
protected override void Render(HtmlTextWriter writer)

8 个解决方案

#1


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>");
    }
}

#2


OnPreRender是在你显示页面内容前可以自己增加显示信息

#3


帮忙UP!
接分^_^

#4


UP

#5


up

#6


看了一下,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;
}

#7


收藏

#8


这是控件的输出方法,也就是writer.write(写什么控件就输出什么)

详细参考一些讲开发控件的书就明白了.

#1


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>");
    }
}

#2


OnPreRender是在你显示页面内容前可以自己增加显示信息

#3


帮忙UP!
接分^_^

#4


UP

#5


up

#6


看了一下,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;
}

#7


收藏

#8


这是控件的输出方法,也就是writer.write(写什么控件就输出什么)

详细参考一些讲开发控件的书就明白了.