`

由IsPostBack引发的思考(续)

 
阅读更多

上篇文章中讲了关于Page类的IsPostBack属性的相关知识,并引发了思考。本文中,将借助实例,来帮助大家更好的理解WebForm中的这些知识,相信读者会有意外的收获。

WebForm技术,看起来简单,做起来也看似很简单,但你真正深入去思考,去探索,会发现其非常非常的复杂。

好了,首先借助一个实例,来探索当发生“跨页投递”的这种情况时候,当前“响应页面”的IsPostBack和“请求页面”的IsPostBack值。

先建立两个新的aspx(WebForm) 页面,然后在其中一个页面上(我这里用WebForm2.aspx页面),拖入一个服务端的Button按钮,将其PostBackUrl属性设置,如下

我这里就直接用WebForm1.aspx作为“响应页面”,用来响应这个跨页请求。注意一下路径,否则会请求失败的。

启动调试后,点击WebForm2.aspx页面上的Button按钮,果然跳进WebForm1.aspx页面的后台了,监视“响应页WebForm1.aspx”对应的Page类的IsPostBack属性,发现为false。如图:


有的朋友肯定会忍不住问了,那“请求页”WebForm1.aspx对应的Page类的IsPostBack属性呢?提示大家,使用PreviousPage就可以获取“请求页”对应的Page类啦。

呵呵。结果如下图:

o(∩_∩)o 哈哈。居然是true,好像应正了上文中的总结哦。


接下来,新建一个html页面,将其form表单的属性设置一下,同样是交给webform1.aspx去“处理、响应”,如下:

再调试进webform1.aspx的后台,监视其IsPostBack属性,不用说了,肯定也是false撒,值得提醒大家的是,这里就不能用PreviousPage这个属性了。有图为证:


细心的朋友会发现,我在设置html页面的form表单属性时,还用url传参了 <form action="WebForm1.aspx?abc=123" method="post">

这样做,是为了讲解下一个问题。也是解答一个网友的疑惑,可能很多人都会疑惑。html代码如下:



在这个html中,指定了action,并使用url传值了。有人会和那哥们儿一样疑惑,这到底是get请求,还是post请求呢?

我可以明确的告诉大家,这是个post请求。只是借助url传值罢了。取值如下:





看明白了吗?当Request.QueryString["abc"]和Request.Form["abc"]中具有相同的key值时,但是其对应的value不一样(一个是url中传来的值,一个是form表单提交过来的)那这种情况下,我们使用Request["abc"]取值,到底取得是谁的呢?前面我们也说过,Request[]包含了所有请求信息。。。根据上面的实例推断,其实是QueryString["key"]对应的value优先级更高,我们使用Request["abc"]取到的值,其实是Request.QueryString["abc"]的值,而不是用Request.Form["abc"]取得的form传过来的值

一般的情况下,只有通过提交form表单传值或者get请求的url传值(即便post表单时候同时也用url在传参,url传值的key也不会那么凑巧和form表单中的元素同名),使用Request["key"]取到的值其实就是Request.Form["key"]的值。同理,使用单纯的get请求时候,使用Request["key的值"],就是Request.QueryString["key"]的值。


好了,今天就讲到这里。后续,我会逐渐积累,由浅入深去给大家讲解更多webform相关的技术(尤其是原理性和比较深层的东西)。如果你只是局限于“拖控件绑数据”,请不要关注我,以免浪费你宝贵的时间,谢谢!

本文出自http://blog.csdn.net/dinglang_2009/article/details/6982906,转载请注名出处。


分享到:
评论

相关推荐

    IsPostBack深入探讨 .txt

    IsPostBack深入探讨 .txtIsPostBack深入探讨 .txt

    IsPostBack的使用介绍

    主要讲解Asp.net中的IsPostBack的介绍,如何使用才有用。

    Ispostback在girdview绑定checkbox时的应用

    Ispostback在girdview绑定checkbox时的应用,明确写明了,gridview服务器回发是的刷新造成checkbox的checked总是FALSE得问题!

    ASP.NET中IsPostBack用法详解

    主要介绍了ASP.NET中IsPostBack用法,有助于读者进一步理解IsPostBack用法并加以灵活应用,需要的朋友可以参考下

    IsPostBack原理的介绍

    IsPostback的原理——————————————————————————– 一步一步让你看明白。。 先说说吧,然后在上代码。ispostback:就是判断页面是首次加载的,还是数据回发(有get或者post请求过的)后的...

    js基础js页面刷新问题

    js基础js页面刷新问题js基础js页面刷新问题js基础js页面刷新问题js基础js页面刷新问题

    Web Page的生命周期详解

    ASP.NET Web Page的生命... 在此阶段,每一个control的UniqueID属性被设置,页面的主题也被应用,如果此页面是回传页面,即Page的IsPostBack属性为true,那么页面里各个控件的新的值和ViewState还没有在此阶段被恢复。

    js刷新当前页面

    可以想到: 当调用 location.reload() 方法的时候, aspx页面此时在服务端内存里已经存在, 因此必定是 IsPostback 的。如果有这种应用: 我们需要重新加载该页面,也就是说我们期望页面能够在服务端重新被创建, ...

    点击提交按钮后DropDownList的值变为默认值实现分析

    IsPostBack) { 你的绑定函数; } 否则,页面会重新加载,所有控件的值变为初始值。 IsPostBack是Page类有一个bool类型的属性,用来判断针对当前页是正在为响应客户端回发而加载还是正在被首次加载和访问。 当...

    asp.net2.0系列教程第2章_第1节

    页面生命周期 页面事件 Page_Load事件以及Page.IsPostBack 页面控件事件

    asp.net2.0系列教程第6章_第5节

    6章_第5节删除前添加确认提示 注意数据操作时Page.IsPostBack

    js刷新当前页面的几种方法(相当牛X)

    如果有这种应用: 需要重新加载该页面,也就是说期望页面能够在服务端重新被创建,期望是 Not IsPostback 的。 这里,location.replace() 就可以完成此任务。被replace的页面每次都在服务端重新生成。 代码: ...

    ASP.NET Page生命周期详解

    在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。 (3)初始化页面:页面初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性。如果当前请求是回发请求,则回发数据尚未加载,...

    ASP.NET的网页代码模型及生命周期

    假设某个用户正在浏览网站并与页面之间产生了某种交互,用户的操作就会引发事件,事件通过HTTP被传输到服务器。在服务器中,ASP.NET框架解释信息,并触发事件与之对应的处理程序。该程序可以是.aspx页面中的处理程序...

    web service 获取天气预报 源码 设计

    Page.IsPostBack) { BindPro(); BindCity(); BindWeather(); } } // 获得省份 protected void BindPro() { } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { } ...

    Jquery 无刷新分页

    在网络里找来找去,找来找去...IsPostBack) //{ // pageCount = new PagerTestBLL.PersonManager().GetPersonCount().ToString(); //} } 使得可以用 html 显示,这个将会使找不代码的朋友,少受骗了. (带有数据库)

    UDropDownList

    拥有层级上下级关系的下拉列表且父级不能够选择服务器控件源码,绑定数据不要放到!IsPostBack里面

    asp.net 更换风格

    IsPostBack) { ltrStyleName.Text = userStyle; foreach (string styleName in styleConfig.StyleNames) { ListItem item = new ListItem(styleName); if (string.Compare(styleName, userStyle) == ...

Global site tag (gtag.js) - Google Analytics