2016-08-26 2 views
4

У меня есть кнопка ниже:OnClick событие кнопки пожаров каждый раз на PageLoad

<asp:Button ID="btnApprove" runat="server" Text="Approve" CssClass="button" OnClick="btnApprove_Click" /> 

обработчик события этой кнопки на стороне сервера является:

protected void btnApprove_Click(object sender, EventArgs e) 
    { 
     Page.ClientScript.RegisterStartupScript(Page.GetType(), "key", "alert('Button Approve Clicked')", true);  
    } 

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

Проблема заключается в том, что после того, как я нажал кнопку «Утвердить», теперь, когда я загружаю или обновляю свою страницу, это событие btnApprove_Click выполняется каждый раз.

У меня есть кнопка с несколькими кнопками на одной и той же форме, но ни одна из них не показывает это странное поведение. Я попытался изменить эту кнопку как HTML, но все равно такое же поведение.

Может кто-нибудь, пожалуйста, помогите мне выбраться из него. Заранее спасибо.

+0

Вместо того чтобы показывать 'alert', используйте' Respone.Write («some_text») 'и сообщить результат –

+0

Не знаю, если это то, что вы испытываете, но если нажать на кнопку, а затем нажать кнопку Обновить в браузере страница снова будет опубликована (= кнопка снова нажата), большинство браузеров просят подтвердить об этом. – Esko

+0

@ Esko: Да, я испытываю такое же поведение. –

ответ

1

Попробуйте добавить OnClientClick="return false;"

<asp:Button ID="btnApprove" runat="server" Text="Approve" CssClass="button" OnClick="btnApprove_Click" OnClientClick="return false;"/> 
+0

Используя приведенный выше подход, я не могу вызвать код на стороне сервера (OnClick). –

+0

Вы используете 'asp: Button', который является серверным элементом управления, я думаю, что это создает проблему, вы можете попробовать с' input type = "button" ' –

+0

Уже пробовал, . Я использовал type = "submit", потому что мне нужно вызвать событие на стороне сервера. –

3

Вы должны использовать IsPostBack от нагрузки Page, чтобы предотвратить все время загрузки страницы на кнопку мыши. Вы можете проверять каждый раз на Page_Load.

Пример кода

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     // First Time Load When User Come 
    } 
    else 
    { 
     // Every Time Load When Any click button in page 
    } 
+0

У меня уже есть условие If, реализованное на моей странице, но это меня не касается. Меня беспокоит, что после того, как я нажал кнопку (одобрить) после того, как кнопка click кнопки Approved вызывала каждый раз на странице Load логически, она не должна. –

+0

Когда вы нажимаете кнопку, сначала переходите на страницу Page_Load, а затем после события щелчка кнопки рендеринга. Для более подробной информации вы можете прочитать жизненный цикл страницы. – Developer

+0

Вы не можете избежать Page_Load при любом событии клика управления. Это последовательность цикла страницы. – Developer

0

Как об использовании RegisterOnSubmitStatement вместо этого?

Page.ClientScript.RegisterOnSubmitStatement(Page.GetType(), "key", "alert('Button Approve Clicked')"); 
Смежные вопросы