2014-06-26 43 views
0

我已經看了幾個similarquestions這一個和現在我嘗試使用FindControl方法沒有成功。在母版頁(S)由用戶控制數據傳遞到內容頁

我的Web窗體應用程序有幾個母版頁。所有母版頁通用都是頂部導航用戶控件中的搜索框和按鈕。我試圖抓取在SearchResults頁面上輸入的搜索詞:

HtmlGenericControl topNavDiv = (HtmlGenericControl)Master.FindControl("topNavDiv"); 
Control topNav = (UserControl)Page.FindControl("topNav"); 
if (topNav != null) 
{ 
    TextBox searchBox = topNav.FindControl("searchBox") as TextBox; 
    if (searchBox != null) 
    { 
     Response.Write(searchBox.Text.Trim()); 
    } 
    else 
    { 
     resultsPanel.Visible = false; 
     messagePanel.Visible = true; 
    } 
} 

在第一行中,topNavDiv變量爲null。我正在考慮訪問通過一個母版頁屬性的用戶控件,但與幾個不同的母版頁,我不知道如何確定母版頁的ID作爲搜索可以從任何地方在現場啓動...

UPDATE:

我能搶topNav DIV,搜索框的文本框,如下所示:

Control topNav = (UserControl)Master.FindControl("topNav"); 
if (topNav != null) 
{ 
    TextBox searchBox = topNav.FindControl("searchBox") as TextBox; 
    if (!String.IsNullOrEmpty(searchBox.Text)) 
    { 
     Response.Write(searchBox.Text.Trim()); 
    } 
    else 
    { 
     resultsPanel.Visible = false; 
     messagePanel.Visible = true; 
    } 
} 

唯一的問題是,輸入的搜索框中的文本沒有被持久化。

+1

你訪問這個http://forums.asp.net/post/1516314.aspx – marathonman

+0

不使用嵌套母版頁... – IrishChieftain

回答

0

由於這是一個內部網站,我可以利用查詢字符串參數,以獲得搜索詞如下:

導航與搜索框的用戶控制:

<ul class="navbar-form navbar-left"> 
    <li> 
     <asp:TextBox ID="searchBox" class="form-control col-lg-8" 
      placeholder="Search" runat="server"></asp:TextBox>&nbsp;     
     <asp:Button ID="searchButton" CssClass="btn btn-warning" Text="Search" 
      runat="server" OnClick="searchButton_Click" /> 
    </li> 
</ul> 

用戶器代碼背後:

protected void searchButton_Click(object sender, EventArgs e) 
{ 
    Response.Redirect("~/Search/SearchResults.aspx?term="+searchBox.Text.Trim()); 
} 

硒拱結果頁中的代碼隱藏:

if (!Page.IsPostBack) 
{ 
    if (!String.IsNullOrEmpty(Request.QueryString["term"])) 
    { 
     term = Request.QueryString["term"].ToString(); 
     Response.Write(term); 
    } 
    else 
    { 
     resultsPanel.Visible = false; 
     messagePanel.Visible = true; 
    } 
} 

我真的想知道的是,如果它是程序可以在頁面的確定代碼隱藏,請求頁面的母版頁的身份?

0

如果您需要保留的數據進行查詢字符串出於某種原因,你可以在你的MasterPage.cs文件使用屬性。

public string SearchTerm 
{ 
    get 
    { 
     return searchBox.Text; 
    } 
} 

然後你可以使用任何你需要這樣的:

MasterPage master = (MasterPage)this.Master; 
master.SearchTerm; 
+0

this.Master會在搜索結果頁面的母版頁 - 用戶可以輸入從五個主頁中的任意一個搜索詞,所以不知道這是否會工作... – IrishChieftain

相關問題