如何在母版页ASP.NET上实现搜索栏

时间:2015-06-26 15:05:27

标签: c# asp.net

我正在尝试为我的ASP.NET页面创建一个搜索栏,它将包含在主页中,以便它将显示在所有页面上。输入搜索文本并点击搜索将发送到results.aspx,然后从主页面搜索框中检索文本的值,并在网格视图中显示数据库中的数据。从我的主页搜索工作正常,但我希望用户能够在结果页面上输入新的搜索文本,并在网格视图中使用新数据重新加载页面。 以下是results.aspx页面加载

的代码
   if (PreviousPage != null)
            {
                TextBox SourceTextBox =
                    (TextBox)PreviousPage.Master.FindControl("txtSearchMaster");
                if (SourceTextBox != null)
                {
                    txtSearch.Text = SourceTextBox.Text;
                }
            }

母版页上的代码

    <div id="search">
         <asp:HyperLink ID="linkAddFile" runat="server" BorderStyle="None" NavigateUrl="~/Default.aspx" Width="150px" >Add File</asp:HyperLink>
         <asp:TextBox ID="txtSearchMaster" runat="server"></asp:TextBox>
         <asp:Button ID="btnSearch" runat="server" Text="Search" PostBackUrl="~/results.aspx" />
     </div>

问题是,一旦我到达结果页面并尝试从那里进行新搜索,我的条件(PreviousPage!= null)表示 为空。

2 个答案:

答案 0 :(得分:6)

请勿通过<div id="search"> <asp:TextBox ID="txtSearchMaster" runat="server"></asp:TextBox> <asp:Button ID="btnSearch" runat="server" Text="Search" OnClick="btnSearch_Click" /> </div> 属性从上一页获取搜索值。

相反,当用户执行搜索时,从搜索文本框中获取值并将值传递给结果页面。例如:

母版页

protected void btnSearch_Click(object sender, EventArgs e)
{
    var searchText = Server.UrlEncode(txtSearchMaster.Text); // URL encode in case of special characters
    Response.Redirect("~/Results.aspx?srch="+searchText);
}

背后的主码

protected void Page_Load(object sender, EventArgs e)
{
    if(!String.IsNullOrEmpty(Request.QueryString["srch"])
    {
        //perform search and display results
    }
}

结果页面代码

>>> soup = BeautifulSoup(data, "html.parser")
>>> soup.find('th', text='Industry').findNext('td').find_all('a')[0].get_text()
u'Professional services'
>>> 
>>> soup = BeautifulSoup(data, "lxml")
>>> soup.find('th', text='Industry').findNext('td').find_all('a')[0].get_text()
u'Professional services'
>>> 
>>> soup = BeautifulSoup(data, "html5lib")
>>> soup.find('th', text='Industry').findNext('td').find_all('a')[0].get_text()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'findNext'

答案 1 :(得分:0)

我认为您不应该通过 var_dump('username is: '.$_SERVER['PHP_AUTH_USER'] . ' and password is: ' . $_SERVER['PHP_AUTH_PW']); 属性从上一页获取搜索值。

相反,你也可以这样做:

PreviousPage