上一页的价值未转移

时间:2017-12-30 08:47:20

标签: asp.net webforms master-pages

我有以下代码,其中我尝试将前一页的文本框控件(位于母版页中)中的某些文本传输到同一母版文本框控件。但它不起作用。如果您能发现错误,请告诉我。

  protected void Page_Load(object sender, EventArgs e)
    {


        if (PreviousPage != null)
        {
            TextBox placeholder =
                (TextBox)PreviousPage.Master.FindControl("TextBox1");
            if (placeholder != null)
            {
                TextBox searchBox = (TextBox)Master.FindControl("TextBox1");
                string search = placeholder.Text.ToString();
                searchBox.Text = search;
            }
        }
    }

这是母版页的.aspx:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site1.master.cs" Inherits="AlexBookShop.Site1" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder ID="head" runat="server">
    </asp:ContentPlaceHolder>
    <style type="text/css">
        .auto-style1 {
            margin-bottom: 0px;
        }
    </style>
</head>
<body>


    <form id="form1" runat="server">


        <div>

            <asp:DropDownList ID="DropDownList1" runat="server">
                <asp:ListItem Value="1">Children</asp:ListItem>
                <asp:ListItem Value="1">Finance</asp:ListItem>
                <asp:ListItem Value="3">Non-Fiction</asp:ListItem>
                <asp:ListItem Value="4">Technical</asp:ListItem>
            </asp:DropDownList>

            <asp:TextBox ID="TextBox1" runat="server" CssClass="auto-style1"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Search" OnClick="Button1_Click" />
            <asp:Button ID="Button2" runat="server" Text="Log Out" OnClick="Button2_Click" />

            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </div>

    </form>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

要通过MasterPAge将数据从一个页面传输到其他页面,您需要执行cross page posting

  1. 您需要在第一页上指定PostBackUrl控件的button属性以指向第二页。像

    <asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="~/Secondpage.aspx"/>

  2. 在第二页上设置PreviousPage指令:

    <%@ PreviousPageType VirtualPath="~/firstpage.aspx" %>

  3. 然后,每当第二页收到回发时,从第一页获取所需的数据:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (PreviousPage != null)
        {
            TextBox placeholder =
                (TextBox)PreviousPage.Master.FindControl("TextBox1");
            if (placeholder != null)
            {
                TextBox searchBox = (TextBox)Master.FindControl("TextBox1");
                string search = placeholder.Text.ToString();
                searchBox.Text = search;
            }
        }
    }