Hi Ben,
Look forward to seeing your site and blog post.
When using a PostbackUrl, of course the click event on the current page cannot fire because it doesn't post back to the current page, the postbackurl page receives the post instead.
Now the receiving page, in this case SearchResults.aspx has to know what to expect in the post in order to be able to handle it correctly. So in this case what it does is get a reference to the page that posted and it looks for the specific id of the search input from the master page of the posting page like this:
SearchInput previousPageSearchInput = (SearchInput)Page.PreviousPage.Master.FindControl("SearchInput1");
note that first it must check whether Page.PreviousPage is null or not, this is how it knows if it is receiving a cross page postback.
To make it work from a control that is not in the master page I would have to add an additional attempt to find the control in the PreviousPage itself instead of the master page of the previous page like this:
if (previousPageSearchInput == null) { previousPageSearchInput = (SearchInput)PreviousPage.FindControl("SearchInput1"); }
I just added this to my copy actually. However it still requires that your search textbox have the id "SearchInput1" in order to be able to find it.
Or actually it is looking for a control of type SearchInput not a TextBox so probably the way you did it with a redirect is more simple and reliable.
Best,
Joe