昨天买了这本书,发现了其中一个错误,在第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() Sub page_load(ByVal sender As Object, ByVal 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 的名称。
