0

私はページのプロパティを持っています

    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、ページ読み込みイベントでステータス ( ) が設定されます。

このシナリオで、ブラウザごとに動作が異なるのはなぜですか? これを克服する方法はありますか?

4

0 に答える 0