2011-02-09 80 views
0

我有一個超鏈接的圖像。點擊圖像後,如何從服務器端訪問我的「searchRedirect」功能以實現重定向?如何重定向?

<input id="textSearch" runat="server" name="textSearch" type="text" /> 
<asp:HyperLink id="searchButton" runat="server"> 
     <img alt="" src="images/SearchButton.png"/> 
</asp:HyperLink> 

protected void searchRedirect() 
{ 
    Response.Redirect("/NewProject/Home/?searchString=" + textSearch.Value; 
} 

回答

5

,而不是一個超鏈接,你需要使用一個LinkBut​​ton,並聽取其Click event

<input id="textSearch" runat="server" name="textSearch" type="text" /> 
<asp:LinkButton id="searchButton" runat="server" OnClick="searchRedirect"> 
     <img alt="" src="images/SearchButton.png"/> 
</asp:LinkButton> 

protected void searchRedirect(sender As Object, e As EventArgs) 
{ 
    Response.Redirect("/NewProject/Home/?searchString=" + textSearch.Value); 
} 

鋁Kepp更是建議做這種方式導致頁面只回發到實現重定向,導致不必要的頁面加載。 JavaScript版本,如下面的人會避開第一回發:

<input id="textSearch" runat="server" name="textSearch" type="text" /> 
<a href="#" onclick="window.location='/NewProject/Home/?searchString=' + getElementById('textSearch').value; return false;"> 
     <img alt="" src="images/SearchButton.png"/> 
</a> 

我沒有實際測試的代碼,但我不認爲我有任何錯別字。

+0

這將工作的例子,但是你確定做重定向是你真正想要的嗎?它會發送兩次頁面。我擔心user54197其實並不需要像這樣重定向。 – 2011-02-09 19:26:50

+0

@Al Kepp。你建議轉讓嗎? – MrM 2011-02-09 19:32:34

1

要麼寫入JavaScript,因爲它是如何在客戶端執行該代碼的唯一方法。這是必要的,以使其按照你的意願工作。

或者使用LinkBut​​ton尼克斯皮爾斯說。在這種情況下,你不會在url地址中看到testSearch.Value。 (這通常很好,但如果你想在那裏看到它,你可以做的最好的就是用JavaScript編寫它。)但是,與尼克斯皮爾的代碼不同,我會忽略那裏的重定向命令並立即執行所需的搜索操作。 (因爲重定向會導致發送兩頁到客戶端,這不是用戶通常按下搜索按鈕時期望的那樣)。

0

或者您可以使用JavaScript並擺脫額外往返服務器。下面是使用jQuery

<input id="textSearch" class="textSeachClass" runat="server" name="textSearch" type="text" /> 
<asp:HyperLink id="searchButton" CssClass="searchButtonClass" runat="server"> 
     <img alt="" src="images/SearchButton.png"/> 
</asp:HyperLink> 

<script type="text/javascript"> 
    // This code should be put in a separate .js-file so it can 
    // be cached and the aspx page will be more SEO-friendly 
    $("a.searchButtonClass").click(function (e) { 
     e.preventDefault(); 
     window.location = "/NewProject/Home/?searchString=" + $("input.textSeachClass").val(); 
    }); 
</script> 

我使用的CSS類的選擇,因爲ASP.Net Web表單會改變控件的客戶端ID,當他們得到渲染,除非你使用.Net框架4.