3

検証に失敗した後、新しいポストバックを引き起こすはずのコントロール(ドロップダウンリストまたはボタン)に問題があります。わかりやすく説明しようと思います...

私のページの目的は、データベースに5つの日付を保存することです。このページには次のコントロールがあります。

  • 5つのテキストボックス。それぞれに日付が含まれています
  • 5つのテキストボックスのいずれかでデフォルトの日付を復元するためのリセットボタン(CausesValidation = false)
  • 5つのテキストボックスに5つの日付を適用する事前定義されたテンプレートのドロップダウンリスト(AutoPostback = true、CausesValidation = false)
  • 日付をデータベースに保存するためのボタン

テキストボックスは手動で編集できます。そのため、[保存]ボタンをクリックしたときに、日付の形式が有効でない場合、検証は失敗し、保存は中止されます。問題はその直後です。[リセット]ボタンをクリックするか、ドロップダウンリストの項目を選択しても、ポストバックはトリガーされません。もう一度試してみると、うまくいきます。最初の検証が失敗した後、初めて動作させる方法はありますか?ドロップダウンリストの選択を変更するときにクライアント側で検証を非アクティブ化しようとしましたが、ポストバックはまだ発生しません。

コードの関連部分は次のとおりです。

<asp:DropDownList ID="cboScheduleTemplates" runat="server" AutoPostBack="true" CausesValidation="false" />
<asp:TextBox ID="txtDateDelivery1" runat="server" />
<asp:RegularExpressionValidator ID="revDateDelivery1" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateDelivery1" Text="*" />
<asp:TextBox ID="txtDateYearbookQuantity" runat="server" />
<asp:RegularExpressionValidator ID="revDateYearbookQuantity" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateYearbookQuantity" Text="*" />
<asp:TextBox ID="txtDateDelivery2" runat="server" />
<asp:RegularExpressionValidator ID="revDateDelivery2" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateDelivery2" Text="*" />
<asp:TextBox ID="txtDatePersonalizations" runat="server" />
<asp:RegularExpressionValidator ID="revDatePersonalizations" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDatePersonalizations" Text="*" />
<asp:TextBox ID="txtDateDelivery3" runat="server" />
<asp:Button ID="btnSetDefaultDelivery3" runat="server" ValidationGroup="Schedule" CausesValidation="false" />
<asp:RegularExpressionValidator ID="revDateDelivery3" runat="server" Display="Dynamic" ValidationGroup="Schedule" ControlToValidate="txtDateDelivery3" Text="*" />
<asp:Button ID="btnSaveSchedule" runat="server" CssClass="btnAction" Text="Save" ValidationGroup="Schedule" />
<asp:ValidationSummary ID="validationSummarySchedule" runat="server" ValidationGroup="Schedule" DisplayMode="List" />
4

1 に答える 1

5

この投稿で示唆されているように、問題は Page_ClientValidate の呼び出しに起因します。したがって、クライアント関数を次のようにラップすると、問題は解決しました。

関数 DoPageClientValidate(validationGroupName)
{
     var result = Page_ClientValidate(validationGroupName);
     Page_BlockSubmit = false;
     結果を返します。
}
于 2014-02-05T15:58:23.167 に答える