ASP.NET 2.0中使用强类型访问PreviousPage属性页的控件

ASP.NET 2.0 中增加了一个 IButtonControl 接口(ButtonImageButtonLinkButton控件实现了此接口),在这个接口中定义了一个 PostBackUrl 属性,使用这个属性可以实现在用户点击按钮时将页面的内容回发到另外一个页面。并且在另一个页面中可以使用 Page.PreviousPage 属性获取到前一个页面的实例,通过  PreviousPage.FindControl("ControlID") 方法获取前一页面中的控件以及控件的属性。然而,在你必须将控件从前一页的控件树中找出来才能访问控件的属性。

如果想直接访问那些属性,我们可以使用@ PreviousPageType 指令获取 PreviousPage 属性的强类型来实现。下面是一个例子:

Page1.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>

<script runat="server">
    public string TextValue
    {
        get { 
return TextBox1.Text; }
    }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        
<asp:Button ID="Button1" PostBackUrl="Page2.aspx"
            runat
="server" Text="Button" />
    
</div>
    
</form>
</body>
</html>

Page2.aspx
<%@ Page Language="C#" %>
<%@ PreviousPageType VirtualPath="~/Page1.aspx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>

<script runat="server">
    protected 
void Page_Load (object sender, EventArgs e)
    {
        
if (!IsPostBack)
            Label1.Text 
= PreviousPage.TextValue ;
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
    
<div>
        Page1中输入的文本是:
       
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    
</div>
    
</form>
</body>
</html>


注意:只能在 Web 窗体页(.aspx 文件)上使用 @ PreviousPageType 指令。如果同时定义了属性 TypeNameVirtualPath,则 @ PreviousPageType 指令将失败。



posted on 2007-09-21 17:20  Easy Company  阅读(1530)  评论(0编辑  收藏  举报

导航