2011-10-14 3 views
5

私はShowMessageBox="True"といくつかのバリデータで複数の検証要約を設定したasp.netページを持っています。検証が失敗した場合、検証サマリーは正しく表示されますが、通常はページのポストバックをトリガーする次のクリックはポストバックをトリガーしない状況に陥りました。手順は次のようになります。妥当性検査の後、私のフォームはなぜ転記されませんか?

  1. 検証をトリガーするボタンをクリックします。
  2. 検証に失敗し、失敗メッセージのあるメッセージボックスが表示されます。
  3. 検証を行わないが、ポストバックをトリガする必要のある別のボタンをクリックしてください。
  4. 再度ステップ3と同じボタンをクリックして、ポストバックが正常に行われます。

この現象の原因は何ですか?

編集:検証は次のようにして行われました。 JavaScriptで

<asp:Button runat="server" id="btn" onClientClick="return DoValidation();" /> 

:ASPページで

function DoValidation() { 
    if (!Page_ClientValidate('group1')) 
     return false; 
    if (!Page_ClientValidate('group2')) 
     return false; 

    return true; 
} 
+0

良い答えを得るには、おそらくコードを投稿する必要があります。 –

+0

2番目のボタンの場合は、「妥当性チェック」プロパティをfalseに設定してみますか? – IrishChieftain

+0

私はそれをfalseに設定しようとしましたが、同じ結果を得ました。ページはかなり複雑で、私は誰かが同じような状況を見たことがあると思っていました。 – Mykroft

答えて

13

これに取り組んでとデバッガの慎重な使用を行った後、私は最終的にあなたが検証を行う際の方法はに編集で説明したことが判明しました問題は、ページの次のポストバックが通過しないようにするブール値が失敗時に設定されます。私はこれが、私がここでやっているように、検証が明示的にではなく自動的に行われていると考えています。上記のjavascriptを次のように変更します。

function DoValidation() { 
    if (!Page_ClientValidate('group1')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 
    if (!Page_ClientValidate('group2')) { 
     Page_BlockSubmit = false; 
     return false; 
    } 

    return true; 
} 

問題を解決します。うまくいけば、これは私がやったのと同じミスをする次の人を助けるだろう。

+0

デバッガ時間が私のために保存されました。ありがとう! –

+0

1時間前にあなたの答えを見たことがありますか? – clamchoda

関連する問題