ASP.Net Post用户控制Post到新页面

本文关键字:Post 新页面 控制 用户 Net ASP | 更新日期: 2023-09-27 18:04:35

我正在创建一个将作为搜索功能的自定义用户控件。我希望能够轻松地将此添加到多个页面,而无需修改太多代码。

我认为最好的方法是创建一个简单的用户控件,我可以在任何地方注入一行代码,然后将该控件回发到不同的URL。因此,无论搜索功能在哪里,它都会返回到同一个页面。我的控件看起来像这样:

<asp:TextBox ID="searchTextBox" runat="server" MaxLength="350"></asp:TextBox>
<asp:Button ID="submit" runat="server" Text="Search" PostBackUrl="~/myPostBackPage.aspx" />

myPostBackPage.aspx.cs看起来像这样,但它不抓取文本。

protected void Page_Load(object sender, EventArgs e)
{
    content.InnerHtml = ((TextBox)PreviousPage.FindControl("searchTextBox")).Text;
}

但是它没有从searchTextBox字段中提取任何东西,我得到:

Object reference not set to an instance of an object.

是否有更好的方法来做到这一点,或者我应该如何修复我的代码?谢谢!

ASP.Net Post用户控制Post到新页面

我不知道TextBox是在哪里声明的,如果你使用MasterPages,它的NamingContainer将是master的ContentPlaceHolder而不是Page。因此,只需将PreviousPage属性转换为正确的类型:

YourPageType page = PreviousPage as YourPageType;
if(page != null)
{
    content.InnerHtml = page.SearchText;
}

你必须提供一个公共属性,因为TextBox是受保护的(最佳实践):

public string SearchText
{
    get {  return searchTextBox.Text;  }
} 

我测试了你的代码和 previoupage 是空的。试着切换到Page