過去3天我一直在爲此付出努力。當用戶關閉瀏覽器時,我需要從Javascript調用asp.net serverside代碼。我正在使用下面的代碼來完成此操作。在我的asp.net表單中,我有各種驗證控件。即使存在一些驗證錯誤,當我關閉表單時,服務器端代碼在我的開發框(Windows 7)中完美工作。但相同的代碼不適用於我的生產環境(Windows服務器)。從Javascript調用ASP.NET 2.0服務器端代碼
它是否與驗證摘要或驗證控件有關。按鈕控件導致驗證設置爲false。所以即使存在驗證錯誤,我的表單也會回傳。我對麼?我懷疑當發生驗證錯誤時,表單不會返回到服務器。但是我在調用按鈕單擊事件之前禁用了JavaScript中的所有驗證控件。有人可以在這個問題上提出一些看法。
有幾個博客暗示使用JQUERY,AJAX(Pagemethods和腳本管理器)。
function ConfirmClose(e) {
var evtobj = window.event ? event : e;
if (evtobj == e) {
//firefox
if (!evtobj.clientY) {
evtobj.returnValue = message;
}
}
else {
//IE
if (evtobj.clientY < 0) {
DisablePageValidators();
document.getElementById('<%# buttonBrowserCloseClick.ClientID %>').click();
}
}
}
function DisablePageValidators() {
if ((typeof (Page_Validators) != "undefined") && (Page_Validators != null)) {
var i;
for (i = 0; i < Page_Validators.length; i++) {
ValidatorEnable(Page_Validators[i], false);
}
}
}
//HTML
<div style="display:none" >
<asp:Button ID="buttonBrowserCloseClick" runat="server"
onclick="buttonBrowserCloseClick_Click" Text="Button"
Width="141px" CausesValidation="False" />
//Server Code
protected void buttonBrowserCloseClick_Click(object sender, EventArgs e)
{
//Some C# code goes here
}
你不能以任何符合標準的方式來捕捉瀏覽器關閉事件。 – Pierreten 2010-06-24 05:32:04
你可以更詳細地 – Kannabiran 2010-06-24 06:50:00
你需要使用AJAX。基本上,你試圖以異步方式對服務器端方法進行客戶端調用。換句話說,它需要是異步的,因爲在用戶關閉瀏覽器之後 - 你無法神奇地「停止」操作並等待你的服務器端代碼完成。你需要鉤入客戶端瀏覽器關閉事件,然後發射一些AJAX來完成你想要的。 – RPM1984 2010-06-25 01:18:19