atlasクライアントページサイクルイベントおよび実践:クライアント検証

9509 ワード

原文:
劉武 |
atlasクライアントページサイクルイベントおよび実践:クライアント検証  
みんな知ってるNetページにはサービス側のサイクルイベントが多く、atlasの発売に伴い、マイクロソフトはクライアントのサイクルイベントをさらに導入した.主に以下のものを含む
  • initializeRequest ページ初期化前
  • に発生する.
  • beginRequestは、データの送信前に
  • に発生する.
  • pageLoadingコミット実行時
  • に発生する.
  • pageLoadedは、コミットが完了し、ページがリフレッシュする後の
  • に発生する.
  • endRequestは、動作全体が完了する後、
  • に発生する.
    本編では、筆者のプロジェクト経験に基づき、これらのイベントの主な用途をまとめた.
    クライアント認証
    クライアント検証は、サーバにデータを送信する前に、BSシステムで不可欠な操作です.したがって、initializeRequestイベントでこの操作を完了することができます.次の例では、ログインボタンをクリックするときに他の操作が行われているかどうかを確認してから、ユーザー名とパスワードが空であるかどうかを確認し、通過したらサービス側に提出します.そうしないと、リクエストをキャンセルします.
    ASP.NET-Code:
    <form id="form1" runat="server">
        <asp:ScriptManager ID="sm1" runat="server">
        </asp:ScriptManager>
        <script type="text/javascript">
        Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(CheckInput);
        function CheckInput(sender,args)
        {
            var pass=true;
            var prm = Sys.WebForms.PageRequestManager.getInstance();
                    if(prm.get_isInAsyncPostBack())
            {
                alert(" ");
                pass=false;
            }
            else
            {
                var no = $get('txtAccount');
                var pwd = $get('txtPwd');
                if(no.value=='')
                {
                    alert(' ');
                    no.focus();
                    pass=false;
                }
                else if(pwd.value=='')
                {
                    alert(' ');
                    pwd.focus();
                    pass=false;
                }
            }
            if(!pass)
            {
                args.set_cancel(true);
            }
        }
        </script>
        <asp:UpdatePanel ID="up1" runat="server" UpdateMode="conditional">
            <ContentTemplate>
                <asp:TextBox ID="txtAccount" runat="server"></asp:TextBox><br />
                <asp:TextBox ID="txtPwd" runat="server" TextMode="password"></asp:TextBox><br />
                <asp:Button ID="btnLog" runat="server" Text="LogIn" OnClick="btnLog_Click" />
            </ContentTemplate>
        </asp:UpdatePanel>
    </form>



    protected void btnLog_Click(object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep(2000);
        if (!(txtAccount.Text == "liuwu" &&
            txtPwd.Text == "liuwu.net"))
        {
            throw new ApplicationException(" ");
        }
    }

    例ではSysを用いる.WebForms.PageRequestManager.getInstance()を使用して、現在のページのPageRequestManagerインスタンスを取得し、そのインスタンスのadd_を使用します.initializeRequestメソッドはinitializeRequestイベントを追加し、最後にInitializeRequestEventArgsを使用する.set_cancel(true)メソッドを使用して、現在のリクエストをキャンセルします.注意ユーザー名またはパスワードが正しくない場合、サービス側は例外を放出します.デフォルトでは、atlasはクライアントのポップアップ・ダイアログ・ボックスに例外情報を表示し、後でエラー・プロンプトをカスタマイズする方法について説明します.


    リファレンス:


    1. initializeRequest
    2. InitializeRequestEventArgs
    3. atlas客户端页面周期事件及实践:防止重复提交