在我目前的項目中,我有一個工作流程,需要向用戶顯示兩個連續的MessageBoxes。第一個更像是一個警告,告訴用戶他嘗試執行操作的風險。我使用的是鏈接按鈕的ClientClickEvent
讓用戶確認操作:WebForm_OnSubmit如何定義?
<asp:LinkButton runat="server" id="lockorder"
CommandName='LockOrder'
OnClientClick="return confirm('Do you really want to lock this order?');" />
如果用戶確認,他是一定要執行的操作,應用程序執行從代碼中一些驗證的後面。結果可能是,有一些未處理的任務。這是有效的,但用戶應該瞭解它,有可能完成這些任務。所以我表現出第二個確認對話框,但是從後面的代碼此時:
if (tasksOpen)
{
ScriptManager.RegisterClientScriptBlock(
this.Page,
typeof(Page),
"Onload",
"var confirmationResult = window.confirm('There are some open tasks left, which might get closed. Do you really want to lock this order?'); if (confirmationResult) __doPostBack('ConfirmLockOrder', confirmationResult);",
true);
return;
}
對於這裏更好的可讀性是JS-片斷得到的交給客戶端:在代碼
var confirmationResult
= window.confirm('There are some open tasks left, which might get closed. Do you really want to lock this order?');
if (confirmationResult)
__doPostBack('ConfirmLockOrder', confirmationResult);
返回再次落後我收到此命令(例如在Page_Load
事件中)並繼續進行實際操作。一切正常,但我做了一些改變,停止執行回發。
我看了一下使用FireBug的客戶端腳本。 __doPostBack
功能(顯然是自動生成的)告訴我沒有定義WebForm_OnSubmit
。我認爲它沒有定義,因爲在OnLoad
-event中顯示確認對話框get,因此在窗體實際加載之前。但爲什麼__doPostBack
-功能甚至需要檢查這個事件是否執行,如果沒有定義?我可以自定義__doPostBack
- 這樣做嗎?或者我應該選擇另一個事件?還是我完全錯了?
我希望有人能指引我進入正確的方向!
在您的JavaScript中的其他地方出現錯誤可能會產生像您上面遇到的錯誤。我會先檢查一下。找到問題可能很煩人。 –
沒有其他的JavaScript錯誤發生......我試圖避免幾乎無處不在的JavaScript,因爲我不是那麼熟悉它...... – Carsten
好吧,有可能您的代碼在加載其他所有內容之前運行。我不確定ScriptManager注入代碼的時間。然而,你可以改變你的JavaScript如下所示:window.onload = function(){[your code here]};如果你使用jQuery,那麼.ready方法將是最好的。 –