ASP.NET - обязательный валидатор полей, выдающий ложные отрицательные ошибки в списке - PullRequest
0 голосов
/ 17 июня 2011

Справочная информация: у меня есть список списка пакетов, который наследует значения из списка списка операторов после выбора поставщика услуг через веб-службу.

  • У меня есть группа validation для кнопки, я использовал Page.IsValid в обработчике кликов, и он говорит «Ничего».
  • Когда я выбираю разные носители в IE8, он сбрасывает другие значения формы, но не в IE9.
  • Если Autopost = false на lbCarriers, список Bundles не будет загружать любые данные.
  • С CausesValidation = "true" в "lbCarriers", список Bundles также не будет загружать какие-либо данные. Вы знаете, как это сделать с помощью Ajax?
  • Знаете ли вы, как я мог бы сделать это сAjax?

Проблема: Использование обязательного валидатора поля в списке комплектов возвращает ложное ошибочное значение, когда я выбрал комплекты.Когда я нажимаю кнопку «Отправить», я получаю сообщение об ошибке «Выбрать как минимум 1 пакет», но приглашение по-прежнему отправляется, и я получаю электронное письмо.

Вот скриншот приложения:

Validation_Listbox_Error

код asp.net на странице default.aspx:

    <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" />

Вопрос: Чтоальтернативный код или обходной путь вы рекомендуете для этой проблемы?

Спасибо за внимание!

1 Ответ

0 голосов
/ 17 июня 2011

РЕДАКТИРОВАТЬ: Добавить CausesValidation="true" в "lbCarriers"

Я удалил Autopost="true" из первого списка, т. Е. "LbCarriers", и он работает сейчас.

...