ASP.NET学习笔记一

一、静态网站和动态网站
        静态网站:所有的页面内容是固定不变的,无法及时的更新数据。
        动态网站:页面和服务器端进行交互,获得服务端动态生成的数据,在页面中呈现。

二、ASP.NET
       1..NET:是一个开发平台,核心的框架是.NET Framework
              ASP.NET是基于.NET Framework框架,开发动态网站的技术。

       2.ASP.NET(Active Server Page).NET是一种动态的网页技术,基于.NET Framework平台,在服务端运行后台代码,动态生成HTML。
       常见的动态网页技术:ASP.NET,JSP,PHP

       3.ASP.NET技术包括两个方向
              (1)web form
                     控件+事件驱动

              (2)MVC

三、C/S和B/S的区别
       1.C/S:Client/Server客户端服务器架构,客户端需要安装软件,业务处理在客户端机器上执行
       2.B/S:Browser/Sever浏览器乳香器架构,客户端只需要有浏览器,业务处理在服务端完成,对于服务器要求比较高

四、服务器端
       1.硬件:服务器电脑
       2.软件:IIS

       IIS(Internet Information Service):Inter网信息服务,在Windows操作系统下对网站进行管理的软件

五、新建 一个ASP.NET web应用程序
       1.添加web窗体

                扩展名为*.aspx的文件:前端页面
                可以编写html代码,css样式,js/jquery脚本
                asp.net服务端控件(ID="",runat="server"):运行在服务端的控件,由服务端发回到客户端浏览器时,会将服务端控件转换成 对应的客户端 标签  

                扩展名为*.aspx.cs的文件:后台代码,可以编写c#代码

六、B/S中浏览器端与服务器端采用请求/响应模式进行交互
       在浏览器端输入页面地址向服务器IIS请求页面,服务端接收到请求后会进行服务端应用程序的运行,有可能还要去访问数据库服务器,处理完成后,服务端将处理好的结果响应给浏览器端 ,由浏览器去解析呈现

七、aspx页面的请求过程
       1.首先是来自于客户端浏览器的请求,如:http://localhost:2891/index.aspx,该请求发送给IIS服务器
       2.web服务器IIS接收到请求后,检查请求的页面类型,如果是普通的html页面,IIS直接将该页面从服务端发回到客户端,由浏览器去解析;
       如果请求的是 扩展名为aspx页面,IIS处理不了这个请求,它会将这个请求交给专门的asp.net引擎(aspnet_isapi.dll)处理
       3.asp.net引擎将后台代码交给CLR运行,执行完之后再将aspx和aspx.cs两个文件合并成一个页面类,并且将页面类进行实例化成一个页面对象发回到客户端,此时,发回的页面中只有一些html              标签,css样式,js脚本,由浏览器去解析呈现

八、自动回传机制
       1.asp.net事件机制不可以处理所有的客户端操作,因为用户操作是在客户端进行,只有浏览器知道,服务端代码不知道,所以必须通知服务端,重新请求页面,才有机会执行到服务端代码。
       2.为控件设置AutoPostBack=true,在客户端自动生成一个名为__doPostBack的脚本函数,在该 函数中提交表单,从而让后台代码有机会执行

前端代码:

<form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="刷新" Onclick="SetTime"/>
            <asp:TextBox ID="TextBox2" runat="server" OnTextChanged="ChangeText"  AutoPostBack="true"></asp:TextBox>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </div>
    </form>

后端代码:

protected void Page_Load(object sender, EventArgs e)
        {
            TextBox1.Text = DateTime.Now.ToString();
        }
        protected void SetTime(object sender, EventArgs e)
        {
            TextBox1.Text = DateTime.Now.ToString();
        }

        protected void ChangeText(object sender, EventArgs e)
        {
            Label1.Text = TextBox2.Text;
        }

九、客户端和服务端脚本的执行顺序

页面加载时:先执行服务端脚本,再执行客户端。

触发事件时:先执行客户端脚本,再执行服务端。

十、Page类的属性
       1.IsPostBack:页面的请求是首次请求,还是回传请求
            false首次请求,true回传请求(必须将表单重新提交给自己)

protected void Page_Load(object sender, EventArgs e)
        {
            //保证代码只执行一次,并且是在页面首次请求时执行,即页面初始化代码
            if (!IsPostBack)
            {
                TextBox1.Text = DateTime.Now.ToString();
            }
        }

       2.Request属性
              返回一个HttpRequest类型的对象,表示请求期间的数据
          常用属性:
              Form:获得以post方式请求的数据
              QueryString:获得以get方式请求的数据

前端代码:

<form id="form1" runat="server" method="get">
    <div>
        用户名:<input type="text" name="userName" value="" id="txt" /><br />
        密码:<input type="password" name="pwd" value="" /><br />
        <asp:Button ID="btn" runat="server" Text="登录" OnClick="btn_Click"/>
    </div>
    </form>

后端代码:

//通过Request.Form["name"]:以post方式提交表单,获得表单中指定name的元素的值
            //string userName = Request.Form["userName"];
            //string pwd = Request.Form["pwd"];

            //通过Request.QueryString["name"]:以get方式提交表单,获得表单中指定name的元素的值
            string userName = Request.QueryString["userName"];
            string pwd = Request.QueryString["pwd"];
            if (userName=="admin" && pwd == "123")
            {
                Response.Write("<script>alert('登录成功');window.location.href='AdminMain.aspx';</script>");
            }
            else
            {
                Response.Write("<script>alert('用户名或密码错误');</script>");
            }

       3.Response属性
       返回一个HttpResponse类型的对象,表求服务端发回给客户端的响应对象,封装了响应期间的数据
       常用方法:
              Write()方法:服务端向客户端的HTTP输出流中输出内容
              End()方法:停止该页的执行
              Redirect()方法:页面的重定向

前端代码:

<form id="form1" runat="server">
    <div>

         用户名:<input type="text" name="userName" value="" id="txt" /><br />
        密码:<input type="password" name="pwd" value="" /><br />
        <asp:Button ID="btnWrite" runat="server" Text="Write方法" OnClick="btnWrite_Click" /> <br />
        <asp:Button ID="btnEnd" runat="server" Text="End方法" OnClick="btnEnd_Click" /><br />
        <asp:Button ID="btnRedirect" runat="server" Text="Redirect方法" OnClick="btnRedirect_Click" />
    </div>
    </form>

后端代码:

protected void btnWrite_Click(object sender, EventArgs e)
        {
            Response.Write("普通的文本字符串");
            Response.Write("<input type='button' value='动态按钮' name='btn' id='btn'/>");
            Response.Write("<script>alert('hello');</script>");
        }

        protected void btnEnd_Click(object sender, EventArgs e)
        {
            Response.Write("<input type='button' value='动态按钮1' name='btn1' id='btn1'/>");
            Response.End();
            Response.Write("<input type='button' value='动态按钮2' name='btn2' id='btn2'/>");
        }

        protected void btnRedirect_Click(object sender, EventArgs e)
        {
            string userName = Request.Form["userName"];
            string pwd = Request.Form["pwd"];

            //跳转到AdminMain.aspx页面,并且将需要传递的值以查询字符串传递到管理员页面,adminMain界面可以利用Response.QueryString["name"]的方法获得传递的值
            Response.Redirect("AdminMain.aspx?name="+userName+"&password="+pwd);
        }
原文地址:https://www.cnblogs.com/mango1997/p/14175158.html