> 백엔드 개발 > C#.Net 튜토리얼 > ASP.NET 기본 지식(1)

ASP.NET 기본 지식(1)

巴扎黑
풀어 주다: 2016-12-20 13:36:26
원래의
1590명이 탐색했습니다.

通过几天 的面试发现一个规律,对于还没有毕业的大学生来说,拥有多少项目经验 不是企业最看重的,企业更看中的是对基础知识的掌握程度,万丈高楼平地起,现在我就总结一下这方面的基础知识,也当做学习笔记吧!

WebSite和WebApplication的区别
1)当改变后台代码时,WebApplication需重启浏览器或者重新生成解决方案,而WebSite则不用;
2)WebSite没有Solution,没有namespace,不利于工程化开发。

HTTP的工作方式是什么?
1)客户端提交表单请求处理 Request 
2)服务器端处理程序进行处理 Handle 
3)服务端相应        Response
注意: 提交到服务器的表单元素一定要添加name属性,因为服务器只认name,这一点和Jquery、DOM不一样,它们只会识别id.

Form的method属性指定表单的提交方式的问题 *
1)get(默认值)是通过地址栏的URL显式地传递表单;
post传递的表单值是隐藏在Http报文中,URL地址栏中是看不到的;
2)get传递值的数量是有限的,会受到地址栏长度的影响,好像最大是2K个字节,而post则没有限制。
3)post当刷新页面时,会有浏览器提示重新提交表单的对话框,而get则没有。

DIV中的内容不会提交给服务器?
只有给div设置了name属性的value值(如input、textarea、select等)才会被提交到服务器

ViewState原理
1)隐藏一些字段,用来存放那些没有value属性值的控件
2)因为http是无状态的协议,所以当页面发生改变的时候,会用viewstate保持页面上一次的状态。
3)例如:label控件被浏览器渲染成标记,所以label的值就存在了viewstate中;
同理,textbox控件也被浏览器渲染成了input标记,TextBox中的值不用存,因为TextBox本质上就是input,input自己会提交给服务器,不需要隐藏字段。
4)可以通过ViewStateDecoder工具查看viewstate中的容的本来面目。

状态信息保存在隐藏字段中(viewstate)的优缺点
1)加大网站流量
2)降低访问速度
3)机密数据放到表单中会有数据欺骗等安全性问题(如网银等)。*

所有的后台程序实现的都是IhttpHandler接口

Cookie和session都是用来存放当前客户端的相关数据,
cookie存放在客户端,session存放在服务器端。
注意:session中不能保存太大的数据,它存的是object类型的数据,所以使用时需要进行类型装换。

http请求报文时,页面中的每类元素,如img、js、css等文件都是单独请求的。这一点可以通过开发者工具或者大名鼎鼎的Firebug查看。
* http是"无状态 "的协议,所以它不会记得上一次做过什么,不会记得上次给浏览器发过**信息,所以当它下次重新请求时,img、js、css等文件会重新发来header信息。

get是通过url地址栏传送的参数显式地 传递的,如: ?a=123&b=abc

post是不通过url传值的,但是它在后台悄悄地传送数据 ,用__VIEWSTATE隐式地 传送。

HTTP各种状态码 含义
1)200系列,表示请求成功,OK
2)300系列,如307,表示服务器重定向,需要对请求做进一步处理;
3)400系列,如404,表示页面未找到,file not found.
4)500系列,表示内部服务器错误。

后台写删除按钮提交事件是,要在Button控件中的OnClientClick属性中加上

可以在客户端提示友好地操作者,以免进行不必要的删除。

127.0.0.0是回环地址,表示访问本机,不经过网卡,无法在外地访问,别名为localhost。
0.0.0.0 表示任意IP,AnyIP.

将Html、js转换为普通一对一字符
HttpUtility.HtmlEncoder(string s) // 转换为特殊字符,例如:小于号<转为< 大于号> 转化为> 空格符转换为

/表示网站的根目录;
..表示上级目录;
.表示当前目录;
~特殊路径,只用于服务器控件中,表示从应用的根目录开始定义。

将虚拟路径转化为全路径,绝对路径
VirtualPathUtility,ToAblolute("~/a/b.html");    // 转换为 /WebSite/a/b.html

服务端控件必须用post方法提交form。

ClientID를 사용하여 클라이언트 컨트롤의 ID를 가져올 수 있습니다.
getElementById('<% =TextBox1.ClientID %>')
모든 서버 컨트롤 ID가 클라이언트 컨트롤과 동일한 것은 아닙니다. ID 동일합니다. 예를 들어 사용자 정의 컨트롤(WebUserContrl.ascx)에서 서버 컨트롤의 ID는 클라이언트의 ID와 다릅니다.

서버 컨트롤 레이블은 클라이언트에서 으로 렌더링됩니다. AssociateControlID 속성이 TextBox1로 설정되면

리터럴 컨트롤은 클라이언트에 아무것도 렌더링하지 않으며 일반 텍스트 형식으로 표시됩니다.
Mode 속성을 EnCode로 설정하면 컨트롤은 자동으로 HttpUtility.HtmlEncoder(문자열 s) 변환을 구현합니다. 이는 때때로 매우 편리하고 XXS 공격을 피할 수 있습니다.

TextBox 컨트롤
1) TextMode 속성을 SingleLine으로 설정하면
2) TextMode 속성을 MultiLine으로 설정하고