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.
是否有更好的方法来做到这一点,或者我应该如何修复我的代码?谢谢!
我不知道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