《ASP.NET高级编程》中关于跨页传送的一个错误

    技术2022-05-11  58

        昨天买了这本书,发现了其中一个错误,在第65页,这个代码我修改过,稍有不同,在privious.aspx中有以下代码。

     

    < html xmlns = " http://www.w3.org/1999/xhtml "   > < head runat = " server " >      < title id  = " title1 "  runat  = " server " > 无标题页 </ title >      < style type = " text/css "   >     #container {    border:1px solid # 333333 ;    width:500px;    margin:0px  auto ;    }    # left {    width: 80 %;    float: left ;    }    # right {    width: 20 %;    float: left ;    }         </ style > </ head > < body >      < form id = " form1 "  runat = " server " >      < div id = " container " >      < div id = " left " >          < asp:Calendar ID = " Calendar1 "  runat = " server "  Height = " 243px "  Width = " 271px " ></ asp:Calendar >      </ div >      < div id = " right " >          < asp:Button ID = " Button1 "  runat = " server "  Text = " OK "   PostBackUrl  = " ~/Test/current.aspx "  AccessKey = " b "  BackColor = " #C0FFFF "  BorderColor = " Red "  BorderWidth = " 1px " /></ div >      </ div >      </ form > </ body > </ html >

     

    其中利用button的postbackurl 属性将本页内的calendar1的所选日期传送到current.aspx,但是用了上述的代码后,不管如何单击button,都不能使页面转向current.aspx页面.

      

     

        Sub page_load(ByVal sender As ObjectByVal e As System.EventArgs)        If Page.IsCrossPagePostBack = True Then                               Dim cale As Calendar            cale = CType(PreviousPage.FindControl("calendar1"), Calendar)                        Label1.Text = cale.SelectedDate.ToString        Else            Response.Redirect("previous.aspx")        End If          End Sub

     如果去掉current.aspx中"if page.iscrosspagepostback  then"语句,则可以转向,但无法判断是从privious.aspx过来,所以还是不能省略,在google搜索中,发现很多遇到类似的问题,但都没有找到根本原因,其实这个判断语句本身有问题,根本原因是privious.aspx将数值传送给current.aspx时,不是current.aspx 的iscrosspagepostback 的属性变成true了,privious.aspx的iscrosspagepostback 的属性变成true了,因此,判断语句应该改成

     If Page.PreviousPage.IsCrossPagePostBack = True Then.....

    说的详细一点

     

    在任何一种情况下,PreviousPage 页属性都将包含表示上一页或发信方页的对象。例如,如果页 A 发送至页 B,则页 A 的 IsCrossPagePostBack 属性(可通过 PreviousPage 属性访问)将为  true ,而页 B 的 PreviousPage 属性将具有页 A 的名称。

    最新回复(0)