ASP.NET小札(二)--HttpContext(请求上下文对象)

ASP.NET小札(二)--HttpContext(请求上下文对象)_第1张图片

二、服务器如何获取浏览器提交的数据?
    1.获取POST数据:context.Request.Form[“txtname”]
     2.获取GET参数:context.Request.QueryString[“txtname1”]

三、服务器如何向浏览器输出数据?
  1. 服务器向浏览器输出文本内容:

    context.Response.ContentType = "text/plain";

    context.Response.Write(“我是从服务器输出到浏览器的数据!:)”);
    //Response 允许开发人员对当前页面的输出流进行操作
    //write:直接在页面上输出内容,将内容存在httpwriter中的char数组

 

   2.服务器向浏览器输出js代码:
    context.Response.ContentType = "text/html";
    context.Response.Write("");

  

  3.redirect:重定向到另外一个页面,服务其发送命令让浏览器跳转
   原理:服务器向浏览器发送一个包含302状态码和Location的响应报文,浏览器看到302后就会自动请求Location指定的页面。Response.Redirect(location);


   4.end:立即输出Response里保存的响应报文数据,并停止当前页面代码的执行。Response.End();

 

ASP.NET小札(二)--HttpContext(请求上下文对象)_第2张图片

 

四、关于表单提交数据:

   浏览器向服务器端提交数据,被提交数据的表单(input、select、textarea等)放到form中,form中通过action属性设定表单被提交给哪个页面,为了在服务端取出表单项的值,需要在HTML中为表单元素设定name属性,注意id是给JS操作Dom用的,name才是提交给服务器用的。在服务器端用context.Request["username"]来根据表单项的name来获得提交的属性值。通过context.Response.Write向浏览器输出处理后的显示HTML内容。

   当我们点击“提交”按钮以后是浏览器将用户填写的文本框等控件中的值“提取”出来发送给服务器,而不是服务器来读取用户填写的这个页面。哪些标签的哪些值会被提交给服务器呢?将用户填写的内容提交到服务器有如下几个条件:

 
    1.只能为input、textarea、select三种类型的标签。只有input(文本框、CheckBox等)用户才可能填写值,

等标签仅供显示用,没有提交到服务器的必要。


   2.只有value属性的值才会提交给服务器。以input标签为例,input标签有title、type、disabled等属性,但是这些属性都是供显示用的,用户并不能修改,只有value属性才是用户输入的属性,因此只有value属性的值才会被提交到服务器。


   3.标签必须设定name属性。如果要通过JavaScript操作标签,必须为标签设定Id。如果要将标签的value属性值提交到服务器,则必须为标签设定name属性,提交到服务器的时候将会以“name=value”的键值对的方式提交给服务器,多个键值对之间用&分割。name是给服务器用的,id是给Dom用的。

   

   4.除了单选按钮等少数标签之外,大部分标签的name的值不能重复。如果两个Input文本框的name都为“txtN”,那么提交结果为txtN=123&txtN=768,在服务器取时:Request.Form["txtN"]= 123,678。

   对于RadioButton,同name的为一组,选中的RadioButton的value被提交到服务器。
   

   5.如果设置了控件的disabled属性或enabled=false的话,浏览器也不会提交该控件的值。如果只读(readonly=true),还是会被提交。

   6.只有放到form标签内的标签才可能会被提交到服务器,form之外的input等标签被忽略。

 

注意:1.易犯错误:string 转 int 时,不能使用(int)强转,必须使用对应的转换方法如
int.Parse,int.TryParse,Conver.ToInt32
      2.服务器不允许使用post方式请求静态页面(因为静态页面不能接收浏览器传递(post)过来的数据)。

五、get和post的区别:

   get是通过url传递表单值,post通过url看不到表单域的值;

   get传递的数据量是有限的,如果要传递大数据量不能用get,比如type=“file”上传文章、type=“password”传递密码或者