正在检索回发到另一页的MasterPage文本框控件



我花了两天时间试图找出这个问题的解决方案,甚至尝试了ExpertExchange,但仍然无法找到解决方案。我是一个ASP.Net(使用C#)的新手程序员,我不想在后使用字符串/url

我有一个MasterPage,它有一个名为tbSearchString的文本框。这是一个简单的框,用户可以输入一些内容,然后返回到另一个页面SearchResults.aspx。所以我还有其他页面,比如使用MasterPage的Default.aspx。

我几乎试过所有的东西,也读过几乎所有我能在网上找到的帖子,无论变量是什么,都是空的。

我在searchResults加载页面事件中使用了这段代码,并且这些变量中的每一个都为null,即使我在页面文本框中输入了一个值并单击按钮回发到searchResults页面,它唯一有效的时间是我在searchResults页面上并提交。

搜索结果后端页面

protected void Page_Load(object sender, EventArgs e)
{
TextBox SearchString;
TextBox SearchString2;
TextBox SearchString3;
TextBox SearchString5;   
if (Page.PreviousPage != null)  //This is true on every test
{
SearchString = (TextBox)Page.PreviousPage.Master.FindControl("tbSearchString");
SearchString2 = (TextBox)PreviousPage.Master.FindControl("tbSearchString");
SearchString3 = (TextBox)Master.FindControl("tbSearchString");
TextBox LoginControlx = (TextBox)PreviousPage.FindControl("Form1");
if (LoginControlx != null)
{
TextBox SearchString4 = (TextBox)LoginControlx.FindControl("tbSearchString");
}
}

主网站主页代码

<asp:TextBox ID="tbSearchString" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch1" runat="server" Text="Search" PostBackUrl="~/SearchResultRentalEquiptment.aspx" />

我在CS后端页面中没有任何内容

因此,在Default.aspx页面

没有什么特别的。只有母版页和一些文本内容,我在文本框中输入了一些文本,然后转到SearchResults页面,我无法从Default或任何其他页面的textbox控件中获得该死的值。

你们这些聪明人怎么说?

如何将表单重定向到搜索结果表单?如果使用Response.redirect,Page.PreviousPage.Master.FindControl下的值将为null。尝试使用服务器。传送以查看是否有效。

这里有一种方法:

假设这是您的母版页代码:

<asp:TextBox ID="searchbox" runat="server" /><br />
<asp:Button ID="sendSearch" runat="server" PostBackUrl="~/Results.aspx" Text="Search" />

归根结底,这都是关于HTTP POST的,所以在目标页面Results.aspxPageLoad:

protected void Page_Load(object sender, EventArgs e)
{
string _foo = Request.Form[this.Master.FindControl("searchbox").UniqueID];
}

Hth。。。。

查看会话。当我需要从一个页面到另一个页面获取数据时,我会一直使用它。我目前还不能为你写一个完整的例子,但在我的脑海中,以下应该是可行的:

//page1.aspx:
protected void btnSubmit_Click(object sender, EventArgs e)
{
string greetingString = "Hello";
Session["MyValue"] = greetingString;
Response.Redirect("page2.aspx");
}
//page2.aspx:
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Session["MyValue"].ToString());  //prints "Hello"
}

最新更新