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>");
}
}
将服务器控件内容发送到提供的 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;
}
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>");
}
}
将服务器控件内容发送到提供的 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;
}
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(写什么控件就输出什么)
详细参考一些讲开发控件的书就明白了.
详细参考一些讲开发控件的书就明白了.