ASP.Net Post User control发布到新页面

时间:2013-03-19 11:37:43

标签: c# asp.net user-controls

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

我认为最好的方法是创建一个简单的用户控件,我可以使用一行代码注入任何地方,然后将此控件回发到不同的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.

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

2 个答案:

答案 0 :(得分:1)

我不知道TextBox的声明位置,如果您使用的是MasterPages,则NamingContainer的{​​{1}}将是主页的ContentPlaceHolder而不是Page。因此,只需将PreviousPage属性转换为正确的类型:

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

您必须提供公共财产,因为TextBox受到保护(无论如何最佳做法):

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

答案 1 :(得分:0)

我测试了您的代码, PreviousPage 为空。尝试切换到页面