1

我們使用Sharepoint進行開發,因此我們必須堅持ASP.NET 3.5。 如果我們的頁面有自動回送和一個按鈕的字段,只要用戶在autopostback字段中,我們就會遇到競爭條件並單擊該按鈕。 在這種情況下,按鈕點擊有時會比autopostback的更早返回,因此正在被覆蓋。如何消除ASP.NET中autopostback = true元素的競速條件?

以前有沒有人遇到過這個問題?

什麼是正確的解決方案?

ADDON: 我談論起案件的情況如下:

<form> 
<ScriptManager /> 
<UpdatePanel> 
<TextBox AutoPostBack="True" /> 
<Button /> 
</UpdatePanel> 
</form> 
+0

什麼要求在提交表單前自動回傳?它是否像「用戶名已存在」驗證?在按鈕事件中你無法解決的問題。 – Phill 2011-05-05 00:29:34

+0

請參閱我對第一個答案的評論。我們正在構建通用框架,因此可以在頁面上使用AutoPostback的任意數量的字段。解決方案在我們的案例中必須是通用的。 – Artem 2011-05-05 00:36:20

+0

@Artem - 剛剛閱讀過常見問題,我不明白具有自動回發功能的字段有什麼作用,因此很難回答您的問題。這聽起來像你使用autopostback錯誤的原因,如果每個字段是依賴於以前,或提交表單取決於回發的結果... – Phill 2011-05-05 00:39:23

回答

0

最基本的解決方案,我能想到的是禁止使用JavaScript的處理是造成了自動回發的客戶端事件的按鈕。

+0

然後我們將不得不禁用整個頁面,因爲頁面可能有其他autopostback字段,這將導致相同的條件。因此我們將消除AJAX的所有優勢。 :(可能你可以建議不那麼簡單的解決方案? – Artem 2011-05-05 00:30:13

0

您可以在等待回發時禁用該按鈕。但這是一個黑客,你可能不想這樣做。通常情況下,我希望控件可以進行驗證,並在出現問題時阻止提交。

假設您在下拉框中有自動回覆,在某些情況下,它會爲某些子類別信息切換文本框。要麼發生自動回覆,要麼首先更新文本框,否則提交將使用下拉列表的新值進行提交,服務器端驗證將確定您是否需要在該子文本框中具有值。如果你這樣做了,它會在啓用時返回,並且可能會有一些紅色文本表明它是必需的。