1

サイトのフォームにサードパーティのフィールド検証を実装する必要があります。現在、フォーム フィールドの検証は、ASP.NET バリデータ (必須、正規表現) を使用して行われています。新しい検証を使用しないフィールドでは、引き続きこれらを使用したいと考えています。新しい検証サービスを提供している会社は、サイトに統合して新しい検証を機能させるためのすべてのコードを提供してくれました。基本的な実装では、指定されたフィールドの値を読み取って検証する JavaScript メソッドを呼び出すだけで済みます。いくつかのサービスコール。また、実装では、フォームが最初にonsubmit="return false;"属性セットを持っている必要があります。

私が直面している問題は、検証スクリプトがフォームを送信しようとしているときです (検証後関数がフォームの onsubmit 属性を削除した後) イベント検証がオンになっているため (オフにするオプションではありません)、ページ「無効なポストバックまたはコールバック引数」という例外をスローします。おそらく、コンテキストを提供するために過剰な詳細を提供しましたが、おそらく質問は次のようになります:イベント検証が有効になっている場合、このエラーを引き起こさずに JavaScript を使用して ASP.NET フォームを送信できますか? もしそうなら、どのように?

4

2 に答える 2

1

次のように、JavaScript 関数でポスト バックを呼び出すことができます。

<script type="text/javascript">
    function DoValidation(parameter)
    {
        // Do calls to validation services here

        // If all validation passes, then call this
        if(valid) {
            __doPostBack('btnSave', parameter)
        }
    }
</script>

<asp:Button id="btnSave" runat="server" OnClientClick="DoValidation()" 
            Text="Save" />

注:btnSaveは架空の名前ですが、通常はポスト バックを行うサーバー側のコントロールを表す必要があります。

ページのPage_Loadイベントで、次のように、誰がポストバックを開始したか、およびそれとともに送信されたデータを特定できます。

protected void Page_Load(object sender, EventArgs e)
{
    // Get the control that caused the post back (btnSave)
    Request["__EVENTTARGET"];

    // Get the parameter value (parameter)
    string parameter = Request["__EVENTARGUMENT"];
}
于 2013-09-12T20:07:26.270 に答える