您的位置:首页 > 编程语言 > ASP

黑马程序员--ASP.NET基础学习笔记

2014-02-07 15:14 399 查看
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a
href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------

一.ASP.NET

1.内容:掌握基于ASP.NET的Web开发,ASP.Net内部原理,状态管理(Cookie/Session/ViewState等),普通ASP.Net控件,数据验证,母版,ListView/Repeater等数据绑定控件/AJAX/缓存/Membership/导航/自定义控件等.

2.目标:能够使用ASP.net开发常见的动态网站功能,并且和Dom/JQuery等客户端技术结合进行网站的开发.

3.ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML.可以使用JavaScript/Dom在浏览器端完成很多工作,但是有很多工作无法再浏览器端完成,比如存储数据,访问数据库,复杂的业务逻辑运算,安全性要求高的逻辑运算等.

4.服务端空间和HTML控件的生成关系:在aspx页面中可以使用服务端的空间,简化开发,浏览器只认html,因此服务端空间会渲染到浏览器成html,TextBox-><input type="text"/>.
5.服务器空间不是新的空间,在浏览器端仍然生成html标签,服务端控件虽然好用,但是也有缺点,并不是什么地方用服务端控件都好.

二.ASP.NET基础

1.普通的html标签在ASP.NET中写入可以正常使用.在标签中加上runat="server"就可以在后台调用ID使用.最后显示的时候都是翻译成正常的HTML控件.

2.也可以正常添加JQuery然后使用.

三.WebApplication和WebSite的区别

1.WebApplication(Web应用程序)和WebSite(网站)的区别.WebSite是为了兼容从ASP转过来的开发人员的习惯而存在的,用起来简单,比如不需要创建命名空间/CS代码修改以后不需要重启就能看到变化(无论是WebSite还是WebApplication,修改aspx都不需要重启),但是不利于工程化开发,比如代码出错不容易发现,代码不分命名空间.开发技术上没有任何区别,只是开发/调试的习惯不同而已.

四.一个简单的ASP.NET的一些基本元素

1.提交到服务器的表单元素一定要有name属性.RadioButton重名,提交选中的对象.

2.form中action选择提交给的处理程序.

3.所有表单都是提交以name为key,以value为值的内容

五.get和post的区别

<form action="Hello1.ashx" method="post">//默认为get;

get(默认值)时通过URL传递表单值,post传递表单值是隐藏到http报文中,url中看不到.

get和post的区别:get是通过url传递表单值,post通过url看不到表单域的值;get传递的数量是有限的,如果要传递大数据量不能用get,比如type="file"上传文章,type"password"传递密码或者<textarea>发表大段文章,post则没有这个限制;post会有浏览器提示重新提交表单的问题,get则没有.

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

表单域只有设定了name的才会被提交给服务器(用get方式看的清楚).如果给submit按钮设定name,那么按钮的value也会被提交给服务器.

六.ViewState初探

1.只有设定了name的input/textarea/select的value属性值才会被提交给服务器.

2.非表单元素无法将客户端的元素值传递给服务器端,所以需要将这些值放在隐藏字段中.

3.ASP.Net将所有隐藏内容统一放到了名字未_VIEWSTATE的隐藏字段中,使用数列化算法将所有隐藏内容放到一个字符串中.点击几次在使用ViewStateDecoder这个工具查看ViewState内容.

禁用viewState的方法:enableviewstate=false,禁用ViewState以后TextBox版本不受影响,Div版本受影响,因为input的value不依靠ViewState.

七.在服务端修改TextBox宽度

TextBox1.Width=new Unit(TextBox1.Width.Vlaue+10);

八.ASP.NET中使用Cookie

1.无状态Http:
ttp协议是无状态的,服务器不记得上次给了浏览器什么,浏览器需要记住这些值(input记在value中,对于其他的值就要放到隐藏字段中,比如ViewState),下次再提交服务器的时候,就要把上次的值提交给服务器,然后服务器计算.如果知道上一次的状态,一个方法是在亮蓝旗相应结束之前将状态信息保存到页面表单中,下次页面再向服务器发出请求的时候带上这些状态信息,这样服务器就能根据这些状态信息还原上次的状态了.
态信息保存在隐藏字段中的缺点:加大网站的流量,降低访问速度,机密数据放到表单中会有数据欺骗等安全问题.要把机密数据放到服务器,并且区分不同的访问者的私密区域,那么久要一个唯一的标识.

2.Cookie

简单的设置和读取cookie的值:

 rotected void Button1_Click(object sender, EventArgs e)

    {

        Response.SetCookie(new HttpCookie("color", TextBox1.Text));

    }

    protected void Button2_Click(object sender, EventArgs e)

    {

        Label1.Text= Request.Cookies["color"].Value;

    }

3.Cookie是和站点相关的并且每次向服务器请求的时候除了发送表单参数外,还会降和站点相关的所有Cookie,是强制性的.Cookie也是保存在浏览器端的,并且浏览器会在每次请求的时候会把这个站点的相关Cookie提交到服务器,并且将服务端返回的Cookie更新回数据库,因此可以将信息保存在Cookie中,然后在服务器端读取,修改.服务器返回数据除了普通的htmllm数据以外,还会返回修改的Cookie,浏览器把拿到的Cookie值更新本地浏览器的Cookie就可以了.

Cookie的缺点和表单一样,而且还不能存储过多信息.

九.Session原理

Cookie不能存储过多的信息,如果像保存大量的数据,可以保存一个Guid到Cookie中,然后在服务器中建立一个以Guid为Key,复杂数据为Value全局Dictionary.static字段对于不同用户也只有一份,因此用static实现多用户共享数据.

ASP.NetSession重写,不要放太多对象到Session,Session会有超时销毁的机制.

Session机制并不是Http协议规定的,是ASP.net实现的,现在PHP,JSP等大部分服务端技术都实现了Session,原理都差不多.

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a
href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: