2010-04-15 84 views
0

我有一個相當簡單的代碼,一個按鈕單擊事件,第一行是一個消息框。 單擊按鈕時,不會調用消息框。按鈕單擊時不會調用警報框

protected void btnSubmitToCRM_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     if (!ValidateCoreValue()) 
     { 
      return; 
     } 

     if (!ValidateOtherAppLicenses()) 
     { 
      return; 
     } 

     GetTicketRequesterInfo(); 

     SendCRMEmail(); 

     ClearTextBoxes(Page.Controls); 

    } 
    catch (Exception ex) 
    { 
     ClientScript.RegisterStartupScript(GetType(), "alert", "alert('btnSubmitToCRM_Click - 1" + ex.Message + "');", true); 
    } 
} 

任何想法?

回答

1

所以,這個想法是,提交按鈕拋出一個JavaScript警報?那麼,您需要在與單擊按鈕時觸發的事件不同的事件中註冊客戶端腳本。

想想這裏的事件順序。當你進入btnSubmitToCRM_Click函數時,客戶端已經回到服務器。然後,您嘗試在客戶端註冊事件以提醒您。那麼,那時已經太晚了。客戶端已經點擊了按鈕。當任何被調用的事件被觸發時,RegisterStartupScript方法會在頁面中插入Javascript。所以,一般情況下,這必須在頁面加載時發生。

我會說試着把RegisterStartupScript調用放到你的頁面加載事件中,看看是否有幫助。

更新:因此,如果意圖是要找出測試服務器上的代碼中發生了什麼,那麼您應該附加遠程調試器,使用類似NLog的方式將常規日誌寫入異常,或者您可以編寫將異常消息發送到頁面上的ASP:Label控件。

+0

我更新了上面的代碼。我的意圖是明白爲什麼「SendCRMEmail();」未被調用。目前我不知道代碼塊內的某個點是否執行了代碼執行, – user279521 2010-04-15 19:54:05

+0

你可以附加一個調試器並設置一個斷點來查看函數是否被調用。從我上面看到的你的警報代碼仍然不起作用,因爲你註冊了一個客戶端腳本,在按鈕點擊發生後點擊按鈕。 – Harv 2010-04-15 20:06:11

+0

問題發生在測試服務器上。一切工作正常我的本地主機; – user279521 2010-04-15 20:07:23