日期:2014-05-16  浏览次数:20878 次

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";

                }