webform理解.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
webform理解

webform隶属于ASP.NET架构下的一个重要组成部分,负责封装用于用户端显示的数据。 在EasyJWeb中,WebForm是一个非常重要,也是使用最为频繁的对象,他充当了在视图及程序之间传输、处理数据的媒介。 下面是WebForm中的常用用法: 1、WebForm中包含了视图页面中传输进来的数据,可以通过form.get(键名)的方式来读取这些数据,也可以通过form.set(属性名,值)来改变视图中传过来的数据值。 2、可以把表单中传来数据,通过WebForm提供的快捷方法toPo可以把表单中的数据快速存入模型(域或Command)对象中。如form.toPo(Person.class)可以把表单中的属性值经过转换后存入到Person的对应属性中,并返回一个Person实例。 3、WebForm的toPo方法还会数据校验,可以通过参数设置当校验未通过时是否回滚等。 4、程序中通过WebForm把数据发送到视图模板。要在程序中把一个对象添加到视图,使用form.addResult(名称,obj)来添加,这里即可在视图模板中使用$对象名来访问该对象。 5、WebForm的addPo方法可以把一个对象根据其中的属性名称,传到视图中。如form.addPo(person);则在视图可以通过$name来访问person对象的name属性值。 ? 首先WebForm即web窗体包含两个页面文件:aspx前台页面和cs后台页面文件。通过反编译器Reflector我们可以看到在Dll程序集中前台页面和后台页面分别生成了两个不同的类,而且前台页面aspx类继承于后台页面CS类。 问题: 1.cs为什么可以调用aspx页面中的控件? 2.aspx中的任何控件都可以被cs调用吗? 为了解决上面的两个问题,我们首先得从整体上明白ASP.net的运行原理: 如上图所示,当一个浏览器向服务器请求一个aspx页面时的简体步骤如下: A、服务器会首先创建前台页面aspx类的对象,因为前面我们通过反编译器看到了前台页面类继承于后台页面类,所以当子类(aspx类)被创建时,父类(后台页面CS类)也会顺便被创建。 B、 接着就会在前台页面类中调用ProcessRequest方法(PR方法不是在前台页面类中定义的,而是在Page类中定义的,因为CS类继承于page类,而aspx类又继承于CS类,所以PR方法相当于aspx类的爷爷类中定义的)。 C、 在PR方法中调用BuildControlTree方法,把前台页面所有的html控件和runat=server的控件转成对应的控件对象并添加在前台页面类得Controls集合中(这里当前页面即aspx页面类是根节点),而且runat=server的控件对象会保存在后台CS类中的一个对应类型的变量中。 D、在PR方法中调用后台页面CS类的Page_Load方法,这个方法中的代码是程序员自己写的。 E、 最后再PR方法中调用Render_Controls方法,来遍历控件树中每一个节点的Render_Controls方法,生成完整的html代码 F、 把完整的html代码返回给浏览器。 通过上面简单的描述,我们可以容易的得到前面保存的那两个问题的答案: 1.cs之所以能够调用 HYPERLINK /kf/web/asp/ \t _blank aspx页面中的控件,是因为在调用后台cs页面类的Page_Load方法之前先调用了BuildControlTree方法,把前台aspx页面中的 HYPERLINK /kf/qianduan/css/ \t _blank html控件和runat=“server”的控件转换成了相应的控件对象,并保存在aspx页面类中的Control集合中(当前页面aspx页面类作为根节点也存放在controls集合中),最后生成页面控件树对象。 2.并不是所有的 前台aspx页面类中的所有html控件都可以在cs中???用,而是只有包含在form runat=server /form标签中的控件,并且此控件也含有runat=“server”属性的控件才会在生成控件树时在后台的cs类中保存在对应类型的变量中,作为cs的成员

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档