WebForm 基础1
来源:互联网 发布:2017好看的网络自制剧 编辑:程序博客网 时间:2024/04/28 21:54
aspx文件:
aspx文件(新建项—>Web窗体)这个文件可以几乎写入任何的C#语句(就像当年的ASP),但是强烈不建议这么做。
这样的页面语法混杂,难以管理。
aspx中除了<%%>的内容和runat=server的内容,其他都是原样输出。
aspx中可以在<%%>中嵌入C#代码,如aspx.cs文件中的C#代码,都可以在<%%>中来写。但是不建议这么做。
在aspx中可以使用<%=表达式%>的方式在页面的当前位置输出表达式(表达式至少要用protected级别),
表达式可以是一个方法、属性、字段。不要忘了写=。
aspx目的像其他模板引擎一样,都是简化拼html字符串。
示例代码:
aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"> <title></title></head><body> <form id="form1" runat="server"> <div> <asp:CheckBox Text="显示问好" runat="server" Name="IsShow" ID="IsShow" AutoPostBack="True" OnCheckedChanged="Unnamed1_CheckedChanged" /> <% if (IsShowHelloWorld()) { // 这里就是C#代码,注释也是C#的注释语法 %> <br /> <%--这里是html代码,注释是这种语法 --%> <br /> <br /> <span style='color: red'> <%=GetHelloWorld() %> </span> <% } // 这里又是C#代码,与上面的if语句形成一个完整的判断。 %> </div> </form></body></html>
aspx.cs:
public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected bool isShowHelloWorld; protected bool IsShowHelloWorld() { return isShowHelloWorld; } protected string GetHelloWorld() { return "您好"; } protected void Unnamed1_CheckedChanged(object sender, EventArgs e) { if (IsShow.Checked) { isShowHelloWorld = true; } else isShowHelloWorld = false; } }
aspx和ashx关系
aspx就是一个特殊的ashx,aspx对应的类是Page,Page是实现了IHttpHandler接口,
所以可以说aspx是高级的HttpHandler,aspx中帮我们封装了很多操作,我们可以傻瓜化的进行开发。
ashx(HttpHandler),aspx(Page)
aspx、aspx.cs关系揭秘
在WebForm的页面中执行以下的代码:
protected void WriteType() { Response.Write(this.GetType() + "<br/>"); Response.Write(this.GetType().Assembly.Location + "<br/>"); Response.Write(this.GetType().BaseType + "<br/>"); Response.Write(this.GetType().BaseType.Assembly.Location + "<br/>"); }输出:
ASP.webform1_aspx
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\d6e1812d\9a75c48f\App_Web_d3gkj0nc.dll
WebApplication1.WebForm1
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\d6e1812d\9a75c48f\assembly\dl3\3c414925\0ad1d900_4830cf01\WebApplication1.DLL
发现当前执行页面的类名是ASP.webform1_aspx这样的类名,
父类才是WebApplication6.WebForm1。
使用ILSpy或者Reflector等打开dll,反编译这两个类,发现
WebApplication6.WebForm1是在VS编译器中编写的aspx.cs类,
反编译的内容里没有任何前端页面上的html代码。
而ASP.webform1_aspx则是一个继承自WebApplication6.WebForm1的子类,
ASP.webform1_aspx代码是根据aspx内容动态生成的构建网页内容的类。
重写父类的方法,
protectedoverride void FrameworkInitialize()
在FrameworkInitialize()方法里调用
private void __BuildControlTree(webform1_aspx __ctrl)
构建控件树。
在aspx中所有用C#写的代码都是在 _Renderform1方法里渲染拼接成html代码。
private void __Renderform1(HtmlTextWriter __w, Control parameterContainer)
综上所述:
aspx最终也会生成一个类,
这个类是继承自aspx.cs中的类。
查看反编译以后的代码,可以看到就是编译生成了普通的.NET代码,
代码中在拼接html。因为aspx生成的代码是cs类的子类。
所以就明白了:
为什么“aspx中调用cs的成员级别必须是protected或者public,不能是private的。”
为什么“aspx中可以调用aspx.cs中的成员方法和属性了。”
摘自:传智播客 http://net.itcast.cn/
- WebForm 基础1
- WebForm基础
- WebForm 基础2
- WebForm 基础3 ViewState
- InstallShield X之二 WebForm安装-1- -
- webform使用ajaxToolkit:ModalPopupExtender异步查询,未完成版(1)
- 全面OO asp,构造属于自己的WebForm对象!(序言),基础类以及常用函数
- ASP.NET基础与入门:WebForm,事件驱动编程,Page类
- Modal WebForm
- Modal WebForm
- C# WebForm
- MVC学习系列-WebForm与asp.net MVC两种设计模式区别、MVC设计模式基础了解
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(1) 自定义控件初始
- 用fluentdata+webform做一个简单项目(1)-组织结构
- WebForm Datagrid Advanced Skill
- 自建DataSet/webForm
- ComboBox的源代码(WebForm)
- WebForm中的tip
- 第5章 首页数据中加入用户并实现点赞功能
- hdu1856More is better基础并查集
- STM32学习笔记
- 89年女孩,工作在上海征婚
- 输入"aAZut",输出"bBAvu"
- WebForm 基础1
- MFC中MessageBox的用法
- MemCache
- 我的七年IT人生(真实连载)
- 买土豆故事的启示
- PAT 1001. A+B Format (20)
- 重置VS2012开发环境
- oracle存储过程中RAISE_APPLICATION_ERROR用法
- 《高效学习OpenGL》 之 无法再显示列表中存储的函数