0

背景:Webサービスを介してキャリアが選択されると、キャリアリストボックスから値を継承するバンドルリストボックスがあります。

  • ボタンにvalidationGroupがあり、クリックハンドラーでPage.IsValidを使用すると、「Nothing」と表示されます。
  • IE8で別のキャリアを選択すると、他のフォーム値はリセットされますが、IE9ではリセットされません。
  • lbCarriersでAutopost=falseを指定すると、バンドルリストボックスはデータをロードしません。
  • 「lbCarriers」にCausesValidation="true"を指定すると、バンドルリストボックスもデータをロードしません。Ajaxでその方法を知っていますか?
  • Ajaxでこれを行う方法を知っていますか?

問題:バンドルを選択しているときに、バンドルリストボックスで必須フィールドバリデーターを使用すると、誤ったエラーが返されます。[送信]ボタンをクリックすると、「少なくとも1つのバンドルを選択してください」というエラーメッセージが表示されますが、招待状は引き続き送信され、メールが届きます。

アプリケーションのスクリーンショットは次のとおりです。

Validation_Listbox_Error

default.aspxページのasp.netコード:

    <tr>
        <td class="style5">
            Carrier:<br />
            <font size="1">*Hold Ctrl Key Down to Select Multiple Carriers</font></td>
        <td bgcolor="#ffffff" class="style7">
            <asp:ListBox ID="lbCarriers" SelectionMode="Multiple" AutoPostBack="true" 
                runat="server" Height="86px" Width="250px" ValidationGroup="ValidationGroup">
            </asp:ListBox>
        </td>

        <td bgcolor="#ffffff" class="style2">

                    <asp:RequiredFieldValidator ID="CarrierValidator" runat="server" Text="*"
                        ErrorMessage="Select At Least 1 Carrier"  ControlToValidate="lbCarriers"
                        ValidationGroup = "ValidationGroup" ForeColor="Red" ></asp:RequiredFieldValidator>

        </td>
   </tr>

   <tr>
   <td class="style1">
            Bundles:<br />
            <font size="1">*Hold Ctrl Key Down to Select Multiple Bundles</font></td>

   <td bgcolor="#ffffff" class="style6">
            <asp:ListBox ID="bundles" SelectionMode="Multiple" runat="server" Height="86px" 
                Width="250px" Enabled="True" 
                ValidationGroup="ValidationGroup" CausesValidation="True">
            </asp:ListBox>
   </td>

   <td bgcolor="#ffffff" class="style2">
              <asp:RequiredFieldValidator ID="BundleValidator" runat="server" Text="*"
                        ErrorMessage="Select At Least 1 Bundle" ControlToValidate="bundles"
                        ValidationGroup = "ValidationGroup" ForeColor="Red" ></asp:RequiredFieldValidator>

    </td>
    </tr>

     <asp:Button ID="Send_Button" runat="server" 
                Text="Send Invitation" ValidationGroup="ValidationGroup" Width="123px"/>
        &nbsp;<br />
            <asp:Label ID="Send_Success" runat="server" Text="Invitation sent!"  Visible="false"></asp:Label>

            <br />
            <asp:ValidationSummary ID="ValidationSummary" runat="server" ForeColor="Red" 
                ValidationGroup="ValidationGroup" />

質問:この問題に対してどのような代替コードまたは回避策をお勧めしますか?

見てくれてありがとう!

4

1 に答える 1

0

編集 追加 CausesValidation="true""lbCarriers"

Autopost="true"最初のリストボックス、つまり「lbCarriers」から削除しましたが、現在は機能しています。

于 2011-06-17T17:51:23.807 に答える