Home  >  Article  >  Backend Development  >  ASP.NET basic knowledge (1)

ASP.NET basic knowledge (1)

巴扎黑
巴扎黑Original
2016-12-20 13:36:261574browse

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

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。

You can use ClientID to get the ID of the client control,
getElementById('<% =TextBox1.ClientID %>');
Not every server control ID is the same as the client control ID, for example: when the user The ID of the server-side control in the custom control (WebUserContrl.ascx) will be different from the client-side ID.

The server control label will be rendered as on the client side. If the AssociateControlID property is set to TextBox1, it will be rendered as

Literal controls render nothing on the client and are displayed in the form of plain text.
When setting its Mode property to EnCode, the control will automatically implement HttpUtility.HtmlEncoder(string s) conversion, which is sometimes very convenient and can avoid XXS attacks.

TextBox control
1) Set the TextMode property to SingleLine, it will be rendered as
2) Set the TextMode property to MultiLine, it will be rendered as