私はページのプロパティを持っています
private Boolean Status
{
get { return (Boolean)Session["st"]; }
set { Session["st"] = value; }
}
次に、同じページに(更新パネル内に)ボタンがあります
<asp:UpdatePanel ID="UpdatePanel4" runat="server" >
<ContentTemplate>
<asp:Button ID="btnSubmit" runat="server" Text="Submit" Width="150px"
OnClick="btnSubmit_Click" />
</ContentTemplate>
</asp:UpdatePanel>
ボタンの複数回のクリックを防ぐために、ページの読み込みにこのコードを追加しました
btnSubmit.Attributes.Add
("onclick", "this.disabled=true;" +
Page.ClientScript.GetPostBackEventReference(btnSubmit, "").ToString());
セッション プロパティ ( Status
) をtrueに設定してからボタンをクリックするbtnSubmit
と、セッション プロパティは自動的にfalseに設定されます。無効化コードを削除すると、正常に動作します。
この予期しない動作の原因は何ですか?
更新 1 : これはInternet Explorer 10 (Windows 8) でのみ発生し、Internet Explorer 8 と Google Chrome では正常に動作します....!
更新 2
ページの読み込みにこのコードがあります
if (!Page.IsPostBack)
{
Status = false;
}
Chrome では [送信] ボタンをクリックすると PostBack として処理されるため、正常に動作します (実行されませんStatus = false;
) が、IE では [送信] クリックは PostBack として識別されないためStatus = false
、ページ読み込みイベントでステータス ( ) が設定されます。
このシナリオで、ブラウザごとに動作が異なるのはなぜですか? これを克服する方法はありますか?