zoukankan      html  css  js  c++  java
  • ASP.NET初级学习

    1.          ASP.Net简介及学习

     1.     什么是ASP.Net –ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML。可以使用JavaScriptDom在浏览器端完成很多工作。

    学习ASP.NET不要陷入如何使用服务器控件的误区中,我们要懂得每个控件的运行原理。不要做一个只会拖控件的“程序员”。

    2.     webApplication webSite的区别。

    WebApplication 有命名空间,更改c#代码后要重新启动浏览器方能看到更改的效果。webSite则没有这个东东。

    webSite是由ASP带过来的程序开发习惯,但是它只适用于小型网站的开发,因为代码出错了不容易发现,而且所有页面共用一个命名空间,代码不容易管理。讲简单基础知识时使用webSite,讲高级技术和做大型项目用WebApplication

     

    3.自己动手写动态网站

    提交到服务器的表单元素一定要设置name属性(名字),id是设给Domjquery用的,服务只认nameform表单提交到Hello1.ashx页面处理

     

    ashx是一个服务器处理程序,页面form提交到服务器的数据都是调用他来处理,其实aspx也是处理程序,只不过是通过.Net封装之后的处理程序,继承自ashx。

     

    Http是请求、响应的模型,服务器不会来读取浏览器的内容,用户在输出的内容中填入数据,能够得到的就是客户端浏览器提交过来的数据。

    4.GetPost的区别

    Get方法传参数,可以在地址栏看到参数,而post传递的表单值隐藏到http报文中,就看不到了

    Get传递的数据量是有限的,如果要传递大量的数据,不能有getPost则没有这个限制;而post会有浏览器提示重新提交表单的问题,而get没有

     

    Get方式URL数据格式,服务器文件名后跟着?,由于客户端可能向服务器端提交多个键值对,键值之间用&进行分割,如果URL中有汉字、特殊字符,则要对url进行编码。

     

    Post方法刷新时,他会提示你是否重新发送信息,不重送信息则无法刷新页面。

     

    5.Input版自增

    取得页面提交的数据,在ashx页面上进行处理,然后返回响应值。

    6.ViewState初探

    查看生成的源代码,ASP.Net将所有隐藏内容统一放到了名字为_WIEWSTATE的隐藏字段个,使用序列化算法将所有隐藏内容放到一个字符串中,点击几次再用ViewStateDecoder这个工具查看viewstate内容,发现了确实将这些改变的内容放到了ViewState中。

     

    Label版本的值存放到了ViewState中,TextBox版本的不存,因为TextBox就是input,自己就会提交给服务器,不需要隐藏字段。

    禁用ViewState的方法,禁用控件的ViewState设定enableviewstate=false,禁用整个页面的ViewStateaspx页面源码最上边的Page指令区内加上EnableViewState=”false”.内网系统,互联网的后台可以尽情的用ViewState

    无状态HttpHttp协议是无状态的,不会记得上次和网页发生了什么,服务器不记得上次给了浏览器什么,浏览器要记住这些值,(input就放到value中,对于其他的值就要放到隐藏字段中啦,比如ViewState)下次提交时服务器在原来的基础上进行处理。

    状态信息保存到隐藏字段中的缺点:加大网站的流量,降低访问速度,机密数据放到表单中会有数据欺骗等安全性问题

     

    Cookie

    有时候希望在服务器的任意一个地方存取一些和访问者有关的信息,这时候就不方便将信息保存到表单中了,而Cookie是和站点相关的,并且每次向服务器请求的时候,除了发送表单外,还会将所有和站点有关的Cookie都提交到服务器。服务器返回数据除了普通的html数据外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新到本地浏览器的Cookie就可以了。

    网站的优化,大型网站,图片的服务器域名跟网站域名不一样,这样就不会把网站的cookie提交给图片。比如 www.yahoo.com  图片则为:www.yimg.com/a.gif 减少cookie的传输。

    Session原理

    首先SessionId保存在客户端的cookie中,然后在服务器内存中开辟一块空间放sesion内容。 sessionIdkeySession内容为value的键值对。如下:

    private static IDictionary<string, IDictionary<string, object>> data = new Dictionary<string, IDictionary<string, object>>();

    因为session本身又是一个键值对,一个sessionId对应的内容可以是多个键值对,比如sessionID为112233 。对应的value又是一个Dictionary。字典名为session。则可以有session[“name”],,sesion[“sex”]等多个值。

    不要放太大的对象到SessionSession还会有超时销毁的机制.可以看到,Session不是http协议规定的,是ASP.net实现的。

    Session实现验证码,HttpHandler要能够操作Session,必须要实现IrequiresSessionState接口。

     

    新建一个一般处理程序:

    public void ProcessRequest (HttpContext context) {

            context.Response.ContentType = "image/JPEG";

            using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(100, 50))

            {

                using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))

                {

                    /*

                    g.DrawString("腾讯呀的",new System.Drawing.Font("宋体",18),System.Drawing.Brushes.Red,new System.Drawing.Point(0,0));

                    bitmap.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);*/

                    Random rand = new Random();

                    int code = rand.Next(1000,9999);  //动态生成一个验证码

                    HttpContext.Current.Session["YanZhengMa"] = code; //将验证码保存到Session中

                    string strCode = code.ToString();

                    g.DrawString(strCode, new System.Drawing.Font("宋体", 30), System.Drawing.Brushes.Red, new System.Drawing.Point(0, 0));    //画一个验证码图片。

                    bitmap.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);

                }

            }

    }

    <body>

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

        <div>

        <img src="验证码?.ashx" alt="看不清,换一张?" onclick="this.src='验证码?.ashx?aa='+new Date()"/>

        </div> <%--向一般处理程序请求一个图片。因为验证图片是由一般处理程序画出来的--%>

        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="提交" />

     

        </form>

    </body>

  • 相关阅读:
    C++多态性的总结
    php 基于curl 实现,模拟多线程任务
    php 解决跨域问题
    vue-cli 使用步骤
    php 图片转成base64 前后台示例
    jq 实现选项卡效果
    javascript仿es6的map类
    PHP生成word并可下载
    vue 实现的树形菜单
    vue之路由的基本用法
  • 原文地址:https://www.cnblogs.com/YangFengHui/p/2018587.html
Copyright © 2011-2022 走看看