2011-02-09 2 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

Вместо гиперссылками, вы хотите использовать LinkButton и слушать его 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); 
} 

Al 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 действительно не нуждается в перенаправлении, как это. –

+0

@Al Kepp. Вы предлагаете перевод? – MrM

+0

Отредактировано для включения javascript версии и объяснения –

1

Либо напишите в JavaScript, потому что это единственный способ выполнить этот код на стороне клиента. Это необходимо для того, чтобы он работал точно так, как вы пожелаете.

Или используйте LinkButton, как сказал Ник Спирс. В этом случае вы не увидите testSearch.Value в URL-адресе. (Это часто бывает хорошо, но если вы хотите увидеть его там, самое лучшее, что вы можете сделать, это написать его в JavaScript.) Но в отличие от кода Ника Спьера я не буду указывать команду перенаправления и немедленно выполнить требуемое действие поиска. (Потому что перенаправление приведет к отправке двух страниц клиенту, чего обычно не ожидает пользователь, когда он нажимает кнопку поиска.)

+0

Вы предлагаете перевод? – MrM

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 WebForms изменит идентификатор клиента элементов управления, когда они получают визуализации, если вы не используете .Net Framework 4.

Смежные вопросы