[APN.NET]aspx、ashx 、cs、dll之间的关系

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a954553391/article/details/86407376

前言:有了Ashx,为什么还要有Aspx?代码为什么要后置?<%%>又是什么意思,下面的这篇博客会带你揭开这些问题的答案。

(一)既然有了Ashx,为什么还要有Aspx

如果每次输出网页都 一般处理程序(ashx) 的话太痛苦了,所以一般生成html的时候都直接创建aspx(Web窗体,WebForm)

WebForm分为两个文件【aspx】和【aspx.cs】。

1.【aspx】

aspx是页面模板,是页面描述文件,就是html+js+css的内容,和aspx.cs结合的更好,不用像一般处理程序那样程序员自己去输出HTML字符串或读取填充模板,控件都是定义在aspx中,内联JavaScript、CSS也是写在aspx中的。

2.[aspx.cs]

服务端的C#代码是定义在aspx.cs中。

3.CodeBehind(代码后置)

aspx控制页面长相,cs控制程序逻辑,这种“前aspx后cs”的方式就被称为代码后置。

代码后置将前端和后端区分开,可以帮助开发者更好的完成项目的开发。

扫描二维码关注公众号,回复: 4894640 查看本文章

【aspx和ashx】

aspx和ashx关系:aspx就是一个特殊的ashx,微软在aspx中帮我们封装了很多操作,我们可以“傻瓜”化的进行开发。
aspx和JavaScript和css混合写。

浏览器如果报错“***行错误”(js脚本错误),不要看aspx,要看生成的源代码。

(二)WebForm

cs可以调用aspx中的runat=server的控件(根本原因),aspx中也可以访问cs中定义的非私有的成员(根本原因),还可以编写复杂的C#代码, for等所有C#代码都可以写在aspx中(不推荐)

在当前位置输出表达式的值的时候使用

2.【<%=UserName %>,不要丢了=】

相当于在当前位置调用Response.Write(UserName)使用的函数、代码相当于在这个位置调用函数、执行代码。

注意aspx中调用cs的只能是非私有成员(非private修饰-因为继承关系)

3.<%%>

<%%>中的代码是运行在服务器端的,是C#语法,在服务端运行完成才输出到浏览器,其他部分是运行在浏览器端的,是html、JavaScript语法。

(三)aspx、cs、dll之间的关系

在WebForm的页面中执行下面的代码

Response.Write(this.GetType() + "<br/>");

在执行网站时,会被编译成相应的程序集(dll文件),这些dll文件可以通过以下代码查看,默认保存在C盘中.

Response.Write(this.GetType().Assembly.Location + "<br/>");

当前执行页面的类名是ASP.webform1_aspx这样的类名,父类才是ASPNETTest1.WebForm1
使用Reflector打开这个临时dll,反编译这两个类,发现ASPNETTest1.WebForm1是在VS中编写的aspx.cs类,而ASP.webform1_aspx则是一个继承自ASPNETTest1.WebForm1的子类,ASP.webform1_aspx代码是根据aspx内容动态生成的构建网页内容的类。

综上,【aspx最终也会生成一个类,这个类是继承自aspx.cs中的类】。

查看反编译以后的代码,可以看到就是编译生成了普通的.Net 代码。因为aspx生成的代码是cs类的子类,所以就明白了为什么“

【aspx中调用cs的成员级别必须是protected或者public,不能是private的】。”

总结:每次总结都是回顾和学习,多总结,多收获。

猜你喜欢

转载自blog.csdn.net/a954553391/article/details/86407376