【发布时间】:2012-12-20 01:34:50
【问题描述】:
目前,我的母版页上有一个文本框和一个按钮,用于输入和提交搜索字符串。搜索在我的网站内部。用户将输入搜索字符串,然后单击搜索按钮。搜索按钮重定向到搜索结果页面。搜索结果页面加载时,当前通过上一页的控件搜索搜索字符串文本框来检索搜索字符串。
这一切正常,除非由于异常从登录页面输入搜索:当前用户不允许访问上一页。
所以我想知道检索搜索字符串的更好方法是什么。我不希望将重定向 url 与它混淆。我不反对将其存储在 Session 集合中,但在页面加载事件发生之前无法弄清楚如何将其存储到那里。
以下是相关代码:
从母版页:
<asp:TextBox ID="SearchTextBox" runat="server" />
<asp:ImageButton ID="SearchButton" runat="server" Text="Search" PostBackUrl="~/Search.aspx" ImageUrl="~/Graphics/btn_search.png" ImageAlign="AbsMiddle" />
从搜索结果页面:
private string getSearchTextBoxText(Control ctrl)
{
if (ctrl.HasControls())
{
foreach (Control child in ctrl.Controls)
{
string s = getSearchTextBoxText(child);
if (s != null)
return s;
}
}
else if (ctrl.ID == "SearchTextBox")
{
return ((TextBox)ctrl).Text;
}
return null;
}
protected void Page_Load(object sender, EventArgs e)
{
log.Debug("Entering " + MethodBase.GetCurrentMethod().Name);
string lastSearchText = Label1.Text;
string searchText = null;
try
{
searchText = PreviousPage != null ? getSearchTextBoxText(PreviousPage) : getSearchTextBoxText(this);
}
catch(Exception ex)
{
log.Error("Exception occurred attempting to retrieve the search string", ex);
}
...
【问题讨论】:
-
您在母版页上有一个搜索文本框,并且希望它的文本出现在任何子页中?我说的对吗?