Остановить перезагрузку страницы кнопки ASP.NET

NET приложение, я вставил кнопку, которая вызывает функцию Javascript (OnClientClick событие) и функция VB.NET (OnClick событие)

<asp:Button OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />

Проблема в том, что когда я нажимаю кнопку, она обновляет страницу и удаляет содержимое текстовых полей.

Я пробовал с вставкой return false; на OnClienClick событие, но оно не выполняет событие OnClick.

Как я могу избежать перезагрузки страницы?

PS: в конце функции Javascript открывается новое окно window.open(newWindow.aspx), но я хочу, чтобы первая страница содержала значение, вставленное пользователем в текстовые поля.

Заранее спасибо:)

3 ответа

Вам нужно использовать оператор возврата в двух точках.

OnClientClick="return jsfunction();"

function jsfunction()
{
  //
  return false;
}

ИЛИ, вы можете вернуть false после вызова функции следующим образом.

OnClientClick="jsfunction(); return false;"

Обратите внимание: если вы хотите сделать постбэк условно, вам нужно вернуть true или false.

OnClientClick="return jsfunction();"

function jsfunction()
{
  if(conditionForPostBack)
      return true;
  else
      return false;
}

Или вы можете отключить поведение отправки. По умолчанию asp.net отображает кнопку как кнопку отправки. если вы отключите поведение отправки, он будет отображать кнопку как тип кнопки

<asp:Button UseSubmitBehavior="false" OnClientClick="jsfunction() " OnClick="vbfunction" Text="Submit" runat="server" />

Но с этим кодом он не будет запускать событие на стороне сервера "OnClick"

В поисках того же, что и вы, я нахожу патч:

Если вы вызываете метод на стороне сервера, вы можете использовать AJAXс панелью обновлений, но у меня это не сработало. Но вы можете сохранить то, что хотите, вSession, так что он у вас, пока длится сеанс.

// Save at SessionParameter the elementToSave we want.
this.Session["SessionParameter"] = elementToSave;

// Retrieve the info from the Session
ElementYouNeededToSave = (TypeOfTheElement)Session["SessionParameter"];

Надеюсь, это поможет кому-то в моей ситуации.

Если вы не собираетесь запускать кнопку с помощью функции C# Codebehind, вам не нужно использовать asp:Button. Поэтому вы можете использовать обычный HTML.

<button id='btn_1' onclick='ajax_function()'>Button</button>

Кнопка HTML намного проще и быстрее. если вы используете asp:button, то вы должны использовать функцию clientid(), чтобы перехватить элемент управления, чтобы активировать ajax.

Другие вопросы по тегам