isPostback 的原理及作用(非常简单)
来源:互联网 发布:淘宝护肤品模板 编辑:程序博客网 时间:2024/06/05 02:12
1.IsPostBack用来判断表单是否是回发。(不是第一次请求),是点击表单的提交按钮回发过来的。是否是回发与get请求还是Post请求无关。但是一般情况下回发都是Post请求。一般Get请求都是第一次加载。
2.只有当使用服务器端表单<form runat="server">IsPostBack才可以使用。如果使用客户端表单,则IsPostBack永远都是False.因为当使用服务器端表单的时候会自动生成一个隐藏域,才该隐藏域中,服务器写入了一些内容,通过这些内容就可以判断是否是回发。如果使用的是普通html表单,则需要自己写代码来判断是否是回发。
3.IsPostBack的使用方式,为什么要使用IsPostBack
减少数据加载的次数。避免了每次点击按钮回发都重新加载一次数据。
HTML页面
<html><form action="Page1.aspx"><input type="text" name="UserName" value="Jim"><input type="submit" value="提交"></form></html>
-------------------------------------------------------------Page1.aspx处理页面(一般处理程序)public void ProcessRequest(HttpContext context){ context.Response.ContentType = "text/html"; string mappath = context.Server.MapPath("Page1.aspx");//获取Page1.aspx的路径 string con = System.IO.File.ReadAllText(mappath); //读取mappath的内容 context.Response.Write(con); 将内容写入(画出)到浏览器端//在这里判断用户是否是第一次进入页面(即:用户不是在向服务器在提交表单) string name=context.Request["UserName"];//获取一下name属性为UserName表单的值。如果能获取到值那么用户就是提交了表单而进入页面。否则用户就是第一次进入页面 if (string.IsNullOrEmpty(name)) //如果没有获取到name属性为UserName表单的值。 { context.Response.Write("直接就进入网页了,即用户第一次进入页面。并没有提交表单"); } else { context.Response.Write("提交表单后,经过处理后进入的网页(也就是说网页是经过提交表单后重新画出来的)"); } }
那么现在问题就来了, 每次去取有name 属性的表单的值,以能不能获取到这个值(判断是否为空)来判断用户是否为提交进入页面。这样是有问题的,假如这个有name属性表单的值本身就是允许为空呢? 所以我们这里就添加一个隐藏字段hidden 将他的name 属性设为isPostback ,value值永远设为true(当然你也可以设置其他的值,只要不为空)
这样用户每次提交表单的时候,不管其他有name属性的表单值是否为空,hidden这个表单的值是一定能提交出去,并且能获取到这个值的(因为我已经将hidden表单的值设为一定不能为空) 那么我们就用这个hidden表单的的值是否为空来判断用户是否为提交表单而进入页面(即:用户不是第一次进入页面)
<html><form action="Page1.aspx"><input type="hidden" name="ispostback" value="true"><input type="text" name="UserName" value=""><input type="submit" value="提交"></form></html>
//if(!ispostback)就表示用户是第一次进入页面。if(ispostback)就表示用户是提交表单进入,非第一次进入页面// 如果isPostback==true 那么是提交进入 ; 即:if(ispostback) 提交进入 否则第一次进入 //-------------------------------------------------------------Page1.aspx处理页面(一般处理程序)public void ProcessRequest(HttpContext context){ context.Response.ContentType = "text/html"; string mappath = context.Server.MapPath("Page1.aspx");//获取Page1.aspx的路径 string con = System.IO.File.ReadAllText(mappath); //读取mappath的内容 context.Response.Write(con); //将内容写入(画出)到浏览器端//在这里判断用户是否是第一次进入页面(即:用户不是在向服务器在提交表单) string ispostback=context.Request["ispostback"];//获取一下name属性为ispostback表单的值。如果能获取到值那么用户就是提交了表单而进入页面。否则用户就是第一次进入页面 //string.IsNullOrEmpty()是判断一个值是否为空,如果为空则返回true 否则返回false if (string.IsNullOrEmpty(ispostback)) //如果没有获取到name属性为ispostback表单的值。 { context.Response.Write("直接就进入网页了,并没有提交表单"); } else { context.Response.Write("提交表单后,经过处理后进入的网页(也就是说网页是经过提交表单后重新画出来的)"); } //if(ispostback==null) //{ // context.Response.Write("直接就进入网页了,并没有提交表单"); //} //else //{ // context.Response.Write("提交表单后,经过处理后进入的网页(也就是说网页是经过提交表单后重新画出来的)"); //} }
0 0
- isPostback 的原理及作用(非常简单)
- .Net IsPostback的原理
- IsPostback的原理【转】
- IsPostBack作用
- IsPostBack原理
- ASP.NET(C#) isPostBack的作用
- OpenSessionInViewFilter的作用及原理
- Bundler 的作用及原理
- struts2的原理及作用
- ASP.NET中IsPostback的原理
- if (!IsPostBack)作用
- RSA算法的简要实现(其实原理非常简单)
- 非常简单的无闪刷新验证码原理
- 由<asp:DropDownList>理解Page.isPostBack的作用
- Oracle的Redo的作用及原理
- 代理的作用及原理的学习
- Oracle的Redo的作用及原理
- 光耦的作用及工作原理
- Andrew Ng 《机器学习》课程笔记
- WINDOWS X64平台超出32核CPU 安装11.2.0.3 GI 蓝屏
- 题型分类------其他类(doing)
- 关于修复磁盘的方法c
- struts2 自定义拦截器
- isPostback 的原理及作用(非常简单)
- APP如何防止二次打包
- 事务处理类型表
- Hbase 笔记(6) HBae Shell、REST、Thrift/Avro
- Matlab中VIEW函数使用说明
- 马化腾内部分享:产品经理的必修课
- ORA-12520错误解决一则
- C++ 对bitset使用泛型算法
- HDU 不要62 数位DP