Остановить перезагрузку страницы кнопки 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.