0

ページに検証コントロールがあり、検証メッセージを表示するために検証概要メッセージ ボックスを使用しています。以下に示す JavaScript 関数が機能しましたが、問題は、ボタンの OnClientClick イベントでこの JavaScript 関数を使用していて、フォーム コントロールのボタンが満たされていないため、期待どおりに検証の概要メッセージ ボックスが表示されますが、概要ボックスを閉じると再び表示され、メッセージ ボックスを閉じる必要があるため、毎回 2 回クリックする必要があります。誰かが私が間違っていることを修正できますか。

これが私がやっていることです:-

 <asp:Button ID="SubmitButtonOne" runat="server" Text="Submit" OnClick="SubmitButtonOne_Click"
                         ValidationGroup="Cases" ClientIDMode="Static" OnClientClick="PleaseWaitShow()" />

ここにJavaScript関数があります:

function PleaseWaitShow() {
                var isPageValid = true;
                // Do nothing if client validation is not active
                if (typeof (Page_Validators) != "undefined") {
                    if (typeof (Page_ClientValidate) == 'function') {
                        isPageValid = Page_ClientValidate();                       
                    } 
                } 
                if (isPageValid) {                  

                    document.getElementById('SubmitButtonOne').value = "Processing...";
                }            

                }

コードビハインド:

protected void SubmitButtonOne_Click(object sender, EventArgs e)
    {       
        try
        {              
          // some functionality                   

        }

        catch (Exception)
        {
           //show errror message
        }

    }
4

4 に答える 4

2

これは予期される動作です。

Page_ClientValidate は、PleaseWaitShow メソッド内での明示的な呼び出しが原因で発生し、2 つ目は PostBack ボタンのクリックによる暗黙的な呼び出しです。

したがって、ValidationSummary メッセージ ボックスが 2 回表示されます。

これを回避する解決策はありませんが、何か問題が発生した場合は更新します。

注:指摘したいことの 1 つは、送信ボタンにValidationGroup="Cases"があるため、それを Page_ClientValidate メソッドに渡す必要があることです。

更新 1:私が考えることができる 1 つの方法は、次のようなことを試みることです。

1:OnClientClick="return PleaseWaitShow();"

2: PleaseWaitShow() から isPageValid を返す:

function PleaseWaitShow() {
            var isPageValid = true;
            ....
            ....
            ....
            return isPageValid;
        }
于 2011-05-18T20:12:51.420 に答える
0

いいえ、これは予期された動作ではありません。むしろ、ASP.NET 検証 JS コードのバグです。

このValidationSummaryOnSubmit関数はすべての集計をループし、集計ごとにすべてのバリデータをループします。グループが指定されていない場合、各バリデータのメッセージが追加され、同じメッセージが 2 回 (3、4、5?) 繰り返されます。

関数を修正することで問題を解決しました(53行目程度を見つめて):

....

for (i = 0; i < Page_Validators.length; i++)
{
    var validator = Page_Validators[i];

    if (validator.validationGroup != null && summary.validationGroup != null)
    {
        if (validator.validationGroup != summary.validationGroup) continue;
    }

    if (!validator.isvalid && typeof (validator.errormessage) == "string")
    {
        s += pre + validator.errormessage + post;
    }
}

....
于 2014-04-02T15:04:03.653 に答える