2017-12-30 6 views
1

Ich habe den folgenden Code, in dem ich versuche, einige Text in einer Textbox-Steuerelement einer vorherigen Seite (auf der Masterseite) auf derselben Master-Seite Textbox-Steuerelement zu übertragen. Es funktioniert jedoch nicht. Bitte lassen Sie mich wissen, wenn Sie den Fehler erkennen können.Wert von der vorherigen Seite nicht übertragen

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; 
      } 
     } 
    } 

ist dies die aspx der Masterseite:

<%@ 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> 
+0

Können Sie den Platzhalter "PreviousPage" finden? Können Sie die Frage bearbeiten, um auch HTML hinzuzufügen? –

+0

@SurjitSD: habe die aspx hinzugefügt. Ja, der Platzhalter "PreviousPage" verweist auf das Textfeldsteuerelement der vorherigen Masterseite "TextBox1". – czolbe

+0

Wenn ich richtig verstanden habe, werden Sie zur nächsten Seite weitergeleitet und versuchen, einen Wert von PreviousPage mit derselben Masterseite zu beziehen. Wenn dies der Fall ist, kann es nicht getan werden. Nach der Weiterleitung auf die nächste Seite können die vorherigen Seitenwerte nicht weitergeleitet werden. –

Antwort

0

Für Daten von einer Seite zur anderen Seite über MasterPAge Sie cross page posting tun müssen, übertragen.

  1. Sie benötigen die PostBackUrl Eigenschaft einer button Kontrolle auf der ersten Seite zuweisen zu dem zweiten Punkt. wie

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

  2. stellen Sie die PreviousPage Richtlinie auf der zweiten Seite:

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

  3. Dann, wann immer zweite Seite ein Postback erhält, erhalten die Daten, die Sie von der ersten Seite müssen:

    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; } } }

+0

Darf ich wissen, was # 2 tut? – czolbe

+0

Bietet eine Möglichkeit zum starken Tippen auf die vorherige Seite, auf die über die PreviousPage-Eigenschaft zugegriffen wird. Siehe https://msdn.microsoft.com/en-us/library/ms228169(v=vs.100).aspx –

Verwandte Themen