2017-12-30 35 views
1

이전 페이지의 텍스트 상자 컨트롤 (마스터 페이지에 있음)의 일부 텍스트를 동일한 마스터 페이지 텍스트 상자 컨트롤로 전송하려는 다음 코드가 있습니다. 그러나 그것은 작동하지 않습니다. 오류를 발견 할 수 있으면 알려주십시오.이전 페이지의 값이 전송되지 않음

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

이전 페이지 자리 표시자를 찾을 수 있습니까? 질문을 편집하여 HTML을 추가 할 수 있습니까? –

+0

@SurjitSD : aspx를 추가했습니다. 예, 이전 페이지 개체 틀은 이전 마스터 페이지의 텍스트 상자 컨트롤 인 'TextBox1'을 참조합니다. – czolbe

+0

정확하게 이해했다면 다음 페이지로 리디렉션되어 동일한 마스터 페이지가있는 PreviousPage의 값을 참조하려고합니다. 이 경우에는 할 수 없습니다. 다음 페이지로 리디렉션되면 이전 페이지 값을 참조 할 수 없습니다. –

답변

0

당신이 cross page posting을 할 필요가 MasterPAge 통해 다른 페이지를 한 페이지에서 데이터를 전송하는 경우 :

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입니다.

  1. 당신은 두 번째를 가리 키도록 첫 페이지에 button 컨트롤의 PostBackUrl 속성을 할당해야합니다.

    : 두 번째 페이지가 다시 게시를 수신 할 때마다, 당신은 첫 번째 페이지에서 필요한 데이터를 얻을 다음

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

  2. : 같은

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

    두 번째 페이지의 PreviousPage 지시어를 설정

    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

# 2의 기능을 알 수 있습니까? – czolbe

+0

PreviousPage 속성을 통해 액세스 할 때 이전 페이지에 대해 강력한 입력을하는 방법을 제공합니다. 이 https://msdn.microsoft.com/en-us/library/ms228169(v=vs.100).aspx를 참조하십시오. –