2012-05-09 99 views
0

我有一個像ASP:按鈕不會火onclick事件

<asp:Button ID="Button1" runat="server" Text="Submit" onclick="RedirectToLocker" 
       OnClientClick="return false;" UseSubmitBehavior="false" /> 

一個按鈕,像

public void RedirectToLocker(object sender, EventArgs e) 
     { 
      Response.Redirect(ConfigurationManager.AppSettings["LockerLoginURL"]); 

     } 

在代碼隱藏的方法但是,當我點擊按鈕,它沒有擊中代碼方法。如果我刪除OnClientClick =「返回false;」然後該按鈕提交表單並進入錯誤的頁面。我究竟做錯了什麼?

編輯:我正在使用OnClientClick =「返回false;」代碼,因爲如果沒有它,按鈕出於某種原因充當它嵌套在表單中的提交,並立即重定向到表單動作url而不是打我的代碼。

回答

2

當客戶端事件處理程序返回false時,回發被省略。

OnClientClick="return false;" // <-- no postback 

所以你要麼刪除它,要麼告訴我們爲什麼你真的想從js-onclick事件返回false。如果Response.Redirect進入錯誤頁面,您可能需要更改該頁面。

編輯:因此,通過將表單的Action設置爲另一個網址,您可以重定向到另一個頁面。然後,您可以將按鈕的PostBackUrl設置爲與當前頁面相同的網址。然後它會觸發代碼隱藏。

+0

response.redirect沒有被擊中,有或沒有ClientClick =「return false;」有了它,按鈕什麼都不做。沒有它,按鈕提交表單並轉到表單動作url。既不執行我的代碼。有任何想法嗎? – Josh

+0

@Josh:你爲什麼提到表單動作url?你做一些URL重寫? –

+0

asp:按鈕位於表單內。此表單將一些帳戶數據和帖子收集到創建帳戶的另一個頁面。此按鈕適用於已有帳戶的用戶直接跳到登錄頁面。當我點擊這個按鈕,這是給我相同的頁面,作爲表單提交按鈕,基本上提交表單。我不想這樣,我只是希望它擊中了我的代碼,並獨自離開的形式。 – Josh

0

您需要刪除OnClientClick="return false;"以運行服務器端方法。

如果瀏覽器被重定向到錯誤的頁面,然後檢查在web.configLockerLoginURL應用程序的設定值。這應該與您被重定向到的URL匹配。

將其更改爲正確的URL。

+0

瀏覽器沒有得到我的代碼。點擊按鈕時,它會提交表單並轉到表單action =「url」頁面。 – Josh

0

刪除OnClientClick =「return false;」