您的位置:首页 > 编程语言 > ASP

asp.net组件(4):页面跟踪,了解一些原理

2007-12-18 19:23 543 查看
首先往Web窗体中拉入几个控件.



有4个控件组成.label button panel中含textbox

将label的Visable设为false即,使其不被显示.

然后开启跟踪,运行程序



得到以下数据



我们看到很多个LiteralControl控件,这个是用来做什么呢?我们没有添加这个控件呀?

其实这是asp.net程序代码中的空白部份.

比如:

<asp:TextBox id="txt1" runat="server" />

<asp:TextBox id="txt2" runat="server" />

两个控件之间就有了空白了.LiteralControl控件就在他们之间

比如:

<asp:TextBox id="txt1" runat="server" /><asp:TextBox id="txt2" runat="server" />

两个控件之间就没有了空白.也就没有了LiteralControl控件喽.不信可以自己试一试啊.

回到正题:

可以看到 Label1的呈现大小字节数为 0 由于其Visable设为false所以不被呈现,当然呈现大小为0喽.

Button1 被呈现,大小字节数为66

我们主要观察Panel1 与其中的 TextBox1 127 和 51

我们来看看其回发后的大小,就可以看出系统是如何保留数据的.



输入一些数值,点Button.触使回发.



Panel1与其下的TextBox1的大小发生改变 从127 和 51 变成 146 和70 数据增大.

说明了,客户端把数据通过ViewState发给Asp.net,系统保留了数据.绘制它们.

学会了这些之后,我们也可以来测试下

RenderControl

Render

RenderChildren

查看组件(3)中的代码片段.

protected override void RenderChildren(HtmlTextWriter writer)

{

//foreach (Control c in this.Controls)

//{

// c.RenderControl(writer);

//}

}

注释掉以上4行.使控件不能绘制子控件.

我们推断UseComponent1下的子控件ctl05呈现大小应该为0

跟踪下验证结果是否正确:



结果正确.

去掉以上4行注释.运行程序,使其能绘制子控件.

我们推断UseComponent1下的子控件ctl05呈现大小不为0

跟踪下验证结果是否正确:



为10正确.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐
-->
新的分享
章节导航