Jag har råkat ut för ett mycket märkligt problem. Jag har en usercontrol i en masterpage det är en sökbox. När jag är på default.aspx funkar det, men är jag på en annan sida körs inte ens codebehind, då får jag bara upp att sidan inte finns. Nån som har en aning om vad som kan vara fel?Problem med länkar
<code>
SearchBox.ascx
<asp:Panel ID="pnlSearch" runat="server" DefaultButton="btnSearch">
<div id="Search" class="CenterText" style="width:210px">
<asp:TextBox ID="txtSearch" runat="server" Width="200px" /><br />
<asp:CheckBox ID="cbAllWord" runat="server" Text="Sök på alla ord" Checked="true" />
<asp:Button ID="btnSearch" runat="server" Text="Sök i katalogen" Width="200px"
OnClick="btnSearch_Click" />
</div></asp:Panel>
SearchBox.ascx.cs
private void ExecuteSearch()
{
string searchText = txtSearch.Text.Trim();
bool allWords = cbAllWord.Checked;
if (!String.IsNullOrEmpty(searchText))
Response.Redirect(Link.ToSearch(searchText, allWords, "1"));
}
protected void btnSearch_Click(object sender, EventArgs e)
{
ExecuteSearch();
}
Link.cs
private static string buildAbsolute(string relativeUri)
{
// Get current uri...
Uri uri = HttpContext.Current.Request.Url;
// Build absolute path...
string app = HttpContext.Current.Request.ApplicationPath;
if(!app.EndsWith("/")) app += "/";
relativeUri = relativeUri.TrimStart('/');
// Return the absolute path...
return HttpUtility.UrlPathEncode(String.Format("Http://{0}:{1}{2}{3}", uri.Host, uri.Port, app, relativeUri));
}
public static string ToSearch(string searchString, bool allWords, string page)
{
if (page == "1")
return buildAbsolute(String.Format("/Search.aspx?Search={0}&AllWords={1}", searchString, allWords.ToString()));
else
return buildAbsolute(String.Format("/Search.aspx?Search={0}&AllWords={1}&Page={2}", searchString, allWords.ToString(), page));
}
</code>