博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET 高级编程基础第十一篇—WebForm和Page类成员
阅读量:5745 次
发布时间:2019-06-18

本文共 2557 字,大约阅读时间需要 8 分钟。

前言: 这篇博客简单的介绍了一下WebForm的概念以及Page类的成员信息等,所以这篇博客只是我们开始真正入门前的一些简单说明应用,下面的博客我们将开始说asp.net服务器控件。

  1. WebForm

(1) 如果每次输出网页都直接用HttpHandler的话太痛苦了,所以一般生成HTML的时候都直接创建aspx(web窗体,WebForm)。

(2) WebForm分为两个文件aspx和aspx.cs,aspx是页面模版,是页面描述文件,就是HTML的内容,和aspx结合的更好,不用像一开始那样程序员自己去填充模版,控件都是定义在aspx中的,内联的JavaScript,css也是写在aspx中的,服务端的C#代码就是定义在aspx.cs中的,aspx控制页面长相,cs控制程序逻辑,这种”前aspx后cs”的方式被称为CodeBehind。aspx就是模版引擎,不需要再去寻找第三方的模版引擎。

(3) cs可以调用aspx中的控件,aspx中也可以访问cs中定义的字段,函数,还可以编写复杂的C#代码,for等所有C#代码等都可以写到aspx中。

1)直接在aspx页面中写C#代码

1  <%for(int i=0;i<10;i++){ %>2 3             你好吗??4 5       <% }%>

2) 在cs中定义属性:

1     public string MyName2 3     {4 5         get { return "我是韩迎龙啦"; }6 7     }8 9 <%=MyName %>

(4) 在当前位置输出表达式的值的时候使用<% =UserName %>,不要丢了等号”=”,相当于在当前位置调用Response.Write(UserName);

(5) 使用的函数,代码相当于在这个位置调用函数,执行代码,注意:aspx中调用cs成员级别必须是protected或者public,不能使private。

  1. aspx,cs,dll之间的关系

(1) 在webForm的页面中执行下面的代码:Page_Load{}

1  1) Response.Write(this.GetType() + "
"); //this表示当前类的对象2 3 2) Response.Write(this.GetType().Assembly.Location + "
"); //编辑完成后看到Assembly是在哪里4 5 3) Response.Write(this.GetType().BaseType + "
");6 7 4) Response.Write(this.GetType().BaseType.Assembly.Location + "
");

(2) 发现当前执行的页面的类名是ASP.Weborm_aspx这样的类名,父类才是ASP.Weborm

(3) 使用Reflector打开这个临时的dll,反编译这两个类,发现ASPNETTEST1.WebForm是在vs中编写aspx.cs类,而ASPNETTEST1_aspx则是一个继承自ASPNETTEST1.WebForm1的子类,ASP.WebForm_aspx代码是根据aspx内容动态生成的构建网页内容的类,综上所述:aspx最终也会生成一个类,这个类继承自aspx.cs中的类,查看反编译以后的代码,可以看到就是编译生成了普通的.NET代码,因为aspx生成的代码是cs的子类,所以就明白了为什么”aspx中调用成员级别必须是protected或者public,而不是private”。

  1. Page类成员

(1) Request,Response,Server属性,对context.Request,context.Response,context.Server的简化调用。

(2) AppRelativeVirtualPath属性,获得页面相对于应用根路径的路径,比如:~/Default.aspx。

(3) FindControl(strlID),根据控件的ID找到控件,一般情况下直接在代码中写控件ID利用控件就可以了,但是对于有些场合,使用Listview等控件的模版,编写自定义控件等则需要使用FindControl来引用控件,FindControl返回值是Control,一般需要显示转换为相应的控件。TextBox txtBox=(TextBox)FindControl(”TextBox1”);    txtBox.Text=”韩迎龙”;

注释:拖放一个TextBox,Button按钮,双击Button按钮写入如下代码:

1     protected void Button1_Click(object sender, EventArgs e)2 3     {4 5         TextBox txt = FindControl("TextBox1") as TextBox;6 7         txt.Text = "博客园-Kencery";8 9     }

(4) ResolveClientUrl(url)将虚拟路径转换为客户端访问的路径,比如:ResolveClientUrl(”~/a/b.aspx”)结果是a/b.aspx,这通常在ListView等控件的模版中输出HTML使用,基本就是对VirtualPathutility.ToAbsolute的简化调用,考虑当前页面的相对路径,生成的路径短,最常用。

(5) ResolveUrl(url)将虚拟路径转换为相对于网站根目录的路径,比如:ResolveUrl(”~/a/b.aspx”)的结果就是/WebSite/a/b.aspx。VirtualPathUtility.ToAbsolute直接转换为一个全路径。

注:在.aspx页面中写入如下代码,不考虑当前页面

1   <%=ResolveClientUrl("~/ashx/第10篇/Default.aspx") %>
2 3 <%=ResolveUrl("~/ashx/第10篇/Default.aspx")%>

 

转载地址:http://kbazx.baihongyu.com/

你可能感兴趣的文章
Java和移动端交互
查看>>
Java SSM 客户管理 商户 管理系统 库存管理 销售报表 项目源码
查看>>
排序优化——如何实现一个通用的、高性能的排序函数
查看>>
IDEA中css文件包红色下划线
查看>>
js中bind、call、apply函数的用法
查看>>
OC高效率52之多用GCD,少用performSelector系列方法
查看>>
sqoop导入关系型数据库-解密Sqoop
查看>>
语音分享应用ios源码项目
查看>>
性能测试结果分析
查看>>
Linux-dns基础知识和BIND的简单配置-1
查看>>
kafka Corrupt index found
查看>>
PoE
查看>>
《JAVA与模式》之适配器模式
查看>>
采用spring+structs+hibanate框架开发javaWeb项目
查看>>
数据库和表的管理
查看>>
搭建高性能内存对象缓存Memcached
查看>>
redis 常用命令
查看>>
LVS+Keepalived高可用负载均衡集群架构
查看>>
Linux 文本查看命令之sed
查看>>
Linux之内核编译基础概念
查看>>