- WebForm
- WebForm分为.aspx .aspx.cs两个文件(控件 内联的JavaScript CSS写在.aspx中 C#代码写在.aspx.cs中(该模式成为CodeBehind))
- .aspx & .aspx.cs:
①.aspx→模板(控制页面长相) .aspx.cs→一般处理程序(控制程序逻辑)
②cs可调用aspx控件/aspx中可穿插C#代码(调用cs成员级别至少为public)
③.aspx文件分为三部分(有runat=“server”属性的标签/<% %>/标准HTML标签) .aspx.cs文件和服务器端控件生成一个类 <% %>生成一个类 后面的类在运行时生成 它继承前面的类 最后这个类再结合.aspx文件中的HTML生成页面文件发送给客户
- .ashx & .aspx
- .ashx文件(一般处理程序) & .aspx文件(高级处理程序): .ashx用于写web handler/适合于生成动态图片 文本等内容
- IHttpHandler接口: 定义ASP.Net为使用自定义HTTP Web请求而实现的协定
- IHttpHandler.ProcessRequest(HttpContent x)方法: 页面提交时触发
- HttpContent: 封装有关个别HTTP请求的所有HTTP特定的信息
- HttpRequest(HttpContent.Request): 使ASP.Net能够读取客户端在Web请求期间发送的HTTP值
- HttpResponse(HttpContent.Response): 封装来自ASP.Net操作的HTTP响应信息
- IHttpHandler
- (System.Web)IHttpHandler接口: 定义ASP.NET为使用自定义HTTP处理程序同步处理HTTP Web请求而实现的协定
- 实现文件下载(基于HTTP协议):
Response.AddHeader(“Content-DisPosition”, “attachment; filename=haha.jpg”); //文件名含中文时需HttpUtility.UrlEncode()
- 动态输出优点: 省服务器端资源 重名问题/能直接将生成内容以流的形式输出给浏览器 就不要生成临时文件
- Page
- (System.Web.UI)Page类: 表示从ASP.NET Web应用程序的宿主服务器请求的.aspx文件(又称Web窗体页)
- .Request(HttRequest)
- .Response(HttpResponse)
- .Server(HttpServerUtility)
- .IsPostBack
- .Sessions
- .FindControl(): 根据控件Id寻找控件/一般情况下直接写控件Id就可以引用控件 但对于某些场合(使用ListView等控件的模板 编写自定义控件等)则需使用.FindControl()来找到控件
- .AppRelativeVirtualPath: 获得页面相对于应用根目录的虚拟路径
- .ResolveClientUrl(): 将虚拟路径转换为相对于当前请求的路径(通常在ListView等控件的模板中输出HTML时使用)
- .ResolveUrl(): 将虚拟路径转换为相对于网站根目录的路径
- 三种控件
- HTML控件
ASP.NET将HTML控件当做普通字符串渲染到浏览器端(不做任何处理)
- ASP.NET控件
经过ASP.NET高度封装的控件(运行在服务器端/渲染到浏览器端)
- runat=server的HTML控件
运行在服务器端/渲染到浏览器端/部分封装(属性多为HTML属性)
与ASP.NET控件相比优点: ①操作方便②会对虚拟路径 id→ClientID进行处理
- runat=server的HTML控件
- a→HtmlAnchor
form→HtmlForm
head→HtmlHead
input→HtmlInputButton HtmlInputCheckBox HtmlInputText…
meta→HtmlMeta
table→HtmlTable
tr→HtmlTableRow
td→HtmlTableCell
title→HtmlTitle
未单独封装的标签(如div)→HtmlGeneralControl
- Runat=server的HTML控件不像ASP.NET控件那样封装严密(如后者的BgColor属性为Color类型 而前者的BgColor属性为字符串类型)
- 虚拟路径
- /(http): 根目录(域名相关)
- ../(http): 上级目录
- ./(http): 当前目录
- ~(ASP.NET): 从应用根目录(Application)开始定义(仅限于服务器端控件可以使用)/ASP.NET推荐用法(~并不会被浏览器识别 因此ASP.NET会将这个路径转换为相对于网站的根目录的全路径再输出到浏览器)
- “~”的编程处理: 服务器端控件会自行转换/html控件或需要在代码中转换时可以使用VirtualPathUtility类
- (System.Web)VirtualPathUtility类: 为常见的虚拟路径操作提供实用工具方法
.ToAbsolute()---转换为绝对路径
.AppendTrailingSlash()---如果virtualPath最后没有”/”则添加
.Combine(string basePath, string relativePath)---合并两个路径
.GetDirectory()---返回virtualPath的目录部分
.MakeRelative(string fromPath, string toPath)---计算两virtualPath的相对路径