2011-04-28 2 views
1

TextBox 및 LinkButton이있는 마스터 페이지가 있습니다. TextBox에 텍스트를 입력하고 LinkButton의 click 이벤트에서 텍스트에 액세스하려고하면 항상 빈 문자열로 반환됩니다. 입력 된 텍스트를 집어 다른 페이지의 매개 변수로 전달하려고합니다.내 webform의 textbox.text 속성에 액세스 할 수없는 이유는 무엇입니까?

예제 코드 :

Response.Redirect(HttpUtility.HtmlEncode(String.Concat("~/Pages/SearchResults.aspx?search=", Me.SearchTextBox.Text.Trim))) 
+0

텍스트 상자와 링크 버튼이 모두 마스터 페이지에 있습니까? 당신이 현재 페이지가 page_load 또는 init에서 텍스트 상자를 공백으로 설정합니까? – Fishcake

답변

1

Dim searchbox as TextBox = TryCast(Me.MasterPage.FindControl("SearchTextBox"), TextBox) 

If searchBox IsNot Nothing 
    Response.Redirect(HttpUtility.HtmlEncode(String.Concat("~/Pages/SearchResults.aspx?search=", searchbox .Text.Trim))) 
End If 
+0

완벽한! 이것은 나를 위해 그것을 고쳤습니다 (두 컨트롤이 마스터에있는 것처럼 'MasterPage'비트를 제거했습니다). 내 구문에 무엇이 잘못 되었습니까? – Simon

1

내가 마스터 페이지의 공용 속성으로 컨트롤을 노출 될 수보십시오. 이렇게하면 더 나은 디자인 타임 지원을 얻을 수 있습니다.

마스터 페이지

<asp:TextBox ID="txtFirstName" runat="server" /> 

    public string Firstname 
    { 
     get { return txtFirstName.Text; }  
    } 

하위 페이지

<asp:Literal ID="litText" runat="server" /> 
<asp:Button ID="btnMasterText" Text="Submit" runat="server" 
onclick="btnMasterText_Click" /> 

    protected void btnMasterText_Click(object sender, EventArgs e) 
    { 
     var myMasterPage = Page.Master as SiteMaster; 
     litText.Text = myMasterPage.Firstname; 
    } 

"SiteMaster는"프로젝트의 마스터 페이지의 이름입니다.

관련 문제