ASP.NET学习笔记(一)-入门篇
预备知识: ASP.NET并不是一门编程语言,而是一个统一的Web开发模型,她支持可视化的方式创建企业级网站,ASP.NET是.NET Framework的一部分,在ASP.NET中可以利用.NET Framework中的类进行编程,在ASP.NET 中可以用VB.NET、C#、JScript.NET等编程语言来开发web应用程序。 WebApplication(Web应用程序)是新的网站类型,但是在WebSite(网站)下代码不分命名空间,不利于工程化开发,CS代码修改后不需要重启,代码出错不易察觉,但是可以把WebSite程序转化为WebApplication,在WebSite上点击右键可以有转化为WebApplication的功能,记住,要想调试必须是在Debug的模式下才会有断点生效,并且F12转到定义,然后可以跟进和步过,调试是开发的关键,Session是针对不同的浏览器进程相关,Application是针对所有的应用程序相关,<% 中间包含C#代码在HTML里面 %> <%=中间放动态的表达式%> 静态网页:就是服务器向浏览器发送单纯的Html语言(只包含具有在客户端执行的代码),速度很快,但是维护不方便 动态网页:包含有在Web服务器端执行的代码,然后就是把这一堆都发送给浏览器,又因为浏览器只认识html(还有js脚本等),所以只能解析html,是在服务器动态组成html 名词解释: IIS: Internet information server CGI: common Getway interface,通用网关接口 CGI(Computer Graphics Interface) 计算机图形接口标准 1.解释一种错误的认识 其实在空间里拉过来的控件是完全一样的,就是在自己写的html的内容,因为服务器端的语言是asp的语言,要经过服务器解析为html,所以这里的使用方式和html是完全一样的,这里面的Botton和你托的控件是完全一样的,而浏览器只认html,和脚本,这里只是要翻译而已,这里明确的就是可以完全按照html的语法进行写,在一般的控件后的属性只要加个<input id = "abc" type ="button" runat = "server"> 这样就是说明为服务器语言, asp语言的是解释性的语言(脚本),不利于工程化开发,只有运行到该页的时候才报错,使用webApplication和webSite修改的aspx都不需要重启、大规模的网站一般使用webApplication,并且在VS里还有个在网站上点击右键,有使website转换为webApplication的功能 2.简单的服务器-浏览器交互模式: 1.提交到服务器的表单元素一定要有name属性,如:<input id="Text1" type="text" name="UserName" /><input id="Submit1" type="submit" value="提交" /> 2.提交页面的制作过程为:在网站下添加新项->添加一般应用程序->.ashx页面的出现->ProcessRequest事件里写代码,ProcessRequest事件是对所有的Http请求做的处理,呵呵,忘了,这里必须记住 服务器和浏览器的交互要有三个阶段,请求->处理->响应;哈 3.首先再建立一个html页面,在你想要提交的表单里添加 name属性啊,在form的action="aaa.aspx";就是要提交请求的页面,也可以的任意.aspx页面,在不是使用type = "submit"属性提交的情况下 可以使用 在form里添加 runat = "server" 并且 form 的 id = "form1" onclick="document.getElementById(‘form1’).submit()" type = "button" 使button的样子也可以提交表单,呵呵 4.在ProcessRequst事件中具体的方法是,先判断是否是由表单提交过来的,简单的方法就是在form里建立一个<input type = "hidden" value ="true" name = "ispostback"> 就是一个隐藏的控件,在浏览器端不可见,呵呵,为的就是看看是否是由本页提交过来的; 5.先获取该字段用 string ispostback = context.Request["ispostback"]; 再用if判断就行了,几个常用的方法有: string 模版全路径 = context.Server.MapPath("moban.htm"); string content = System.IO.File.ReadAllText(模版全路径); //因为这里本来就是字符串了,所以就 //不用再加双引号了哈 content.Replace("@num",number);//表示将本地模版的num的值变为number,现在还没有写回去,在这里的content是获得本地一个相同模版的全路径下的所有文本内容,则会使下面的替换成为可能,步骤是先将读取的本地模版字符串信息里的@变量替换为需要的字符串,然后再用context.Response.Write(content);将修改后的信息的完整页面写回请求页面 string fullpath = context.Server.MapPath("aaa.htm"); //获得文件全路径 string content = System.IO.File.ReadAllText(fullpath); //读取文件路径下的文件内容 context.Response.Write(content);//向页面写东西,也可以理解为响应 content = content.Replace("@value",number); //用number的值替换@value 注意是在html 中有 < input type = "text" value = "@value">的前提下 具体代码如下: 在.ashx的页面: <%@ WebHandler Language="C#" Class="IncValue1" %> using System; using System.Web; public class IncValue1 : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/html"; string ispostback = context.Request["ispostback"]; string number = context.Request["number"]; if (ispostback == "true") { int i = Convert.ToInt32(number); i++; number = i.ToString(); } else { number = "0"; } string fullpath = context.Server.MapPath("IncValue1.htm"); string content = System.IO.File.ReadAllText(fullpath); content = content.Replace("@value",number); context.Response.Write(content); } public bool IsReusable { get { return false; } } } 在html中的页面: <!--要记住的是,在表单里面只有key和value能提交到服务器,这里的Key就是name,这里的value就是Value,就是说在页面上的数据必须设置name和value属性,才能交给服务器,呵呵--> <form action ="IncValue1.ashx" id = "form1"> <p> <input type = "hidden" value ="true" name ="ispostback" /> 姓名:<input id="Text1" type="text" name="number" value = "@value" /><input id="Submit1" type="button" value="自增" onclick ="document.getElementById(‘form1‘).submit()" /></p> <!-- 如果是type = "button" ,则不会自动提交表单,需要自己写代码--> </form>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。