0
在我的應用程序的登錄控件中,如果登錄失敗,我將顯示一個對話框窗口。通過這種方式:刪除由ClientScript.RegisterStartupScript添加的腳本
protected void EMSLogin_Authenticate(object sender, AuthenticateEventArgs e) {
log.Info("=============INSIDE EMSLogin_Authenticate======");
RadTextBox UserName = EMSLogin.FindControl("UserName") as RadTextBox;
RadTextBox Password = EMSLogin.FindControl("Password") as RadTextBox;
if (Membership.ValidateUser(UserName.Text, Password.Text)) {
FormsAuthentication.RedirectFromLoginPage(UserName.Text, false);
} else {
ClientScript.RegisterStartupScript(typeof(ScriptManager), "CallShowDialog", "showDialog();", true);
}
}
的JavaScript是:
function showDialog() {
$(document).ready(function() {
$(".jym").dialog("open");
});
}
現在如果登錄失敗的對話框顯示。但問題是如果我刷新瀏覽器窗口,在一次登錄失敗後,對話框再次打開,因爲$(".jym").dialog("open")
寫在頁面中。然後我試了
protected void Page_Unload(object sender, EventArgs e) {
log.Info("=============INSIDE Page_Unload======");
ClientScript.RegisterStartupScript(typeof(ScriptManager), "CallShowDialog", "", true);
}
但是沒有運氣。
有什麼辦法可以解決這個問題嗎?
如果我使用ClientScript.RegisterClientScriptBlock()
這不起作用,我的意思是對話框不會打開時出錯。
感謝您的回覆。但它不起作用。我的意思是,如果我在Page_Load中添加此行,然後回發後對話框窗口不可見。 – 2012-03-25 15:22:11
你的兩個函數都在工作,你需要在服務器上按照正確的順序來獲取它們。 – 2012-03-25 15:27:20
通過記錄,我看到Page_Load正在執行,然後單擊登錄按鈕時執行EMSLogin_Authenticate。你能告訴我會是什麼順序嗎? – 2012-03-25 15:34:16