onclick на стороне сервера, но в некоторых случаях предотвращает обратную передачу

#c# #asp.net #onclick #server-side

#c# #asp.net #onclick (включить) #серверная часть #onclick #на стороне сервера

Вопрос:

У меня есть следующий метод onclick на стороне сервера:

 protected void btnSearch_Click(object sender, EventArgs e)
{
    if (txtSearch.Text == "" || txtSearch.Text.Length < 4) {
        //NO POSTBACK HERE
    } else {
        Response.Redirect(www.google.be);
    }
}
  

Итак, есть ли здесь какой-нибудь совет? Я не могу сделать это на стороне клиента, потому что мне нужно указать параметр на стороне сервера в URL.

Спасибо за помощь

Ответ №1:

почему бы не сделать это на стороне клиента?

  <asp:Button ID="btnSearch" OnClientClick="return validateForm();" OnClick="btnSearch_Click" Text="Send" />
  

и есть метод javascript:

 function validateForm(){
    if(document.getElementById('<%= txtSearch.ClientID %>').value == '')
        return false;
    else
        return true;
}
  

Ответ №2:

вы не можете избежать обратной передачи, если вы уже выполняете событие Click на стороне сервера.

альтернативы:

  • используйте функцию на стороне клиента для проверки и проверки и вызывайте щелчок на стороне сервера только в определенных случаях или возвращайте false, чтобы избежать этого.
  • Используйте метод UpdatePanel, чтобы включить частичную визуализацию и минимизировать влияние обратной передачи. По-прежнему будет обратная передача и весь жизненный цикл страницы, но минимальное мерцание страницы.

в вашем случае, я думаю, вы можете просто делать все на стороне клиента, приведенный выше код легко написать в jQuery.

Комментарии:

1. Но, как я уже сказал, мне нужна переменная на стороне сервера, которую мне нужно указать в URL в качестве параметра. Я не могу одновременно выполнять onclick на стороне клиента и на стороне сервера. Потому что, если я установлю return false; для onclick на стороне клиента, то мой onclick на стороне сервера тоже не работает

2. но в вашем случае, когда txtSearch. Текст имеет значение null или short, вы вернете false и избежите обратной передачи; только в другом случае вы вызовете щелчок на стороне сервера. В любом случае вы даже можете отключить кнопку btnSearch, когда текстовое поле не проверяется правильно.