ASP.NET - 必需的字段验证程序在Listbox上给出错误的否定错误

时间:2011-06-17 14:08:32

标签: asp.net listbox validation requiredfieldvalidator

背景:我有一个捆绑列表框,一旦通过Web服务选择了运营商,它就会继承运营商列表框中的值。

  • 我在按钮上有一个validationGroup,我在点击处理程序上使用了Page.IsValid,它说“Nothing”。
  • 当我在IE8中选择不同的运营商时,它会重置其他表单值,但不会重置IE9。
  • 在lbCarriers上使用Autopost = false时,Bundles列表框不会加载任何数据。
  • 在“lbCarriers”中使用CausesValidation =“true”,Bundles列表框不会加载任何数据你知道怎么做Ajax?
  • 你知道我怎么能用Ajax做这个吗?

问题:当我选择了包时,在包列表框中使用必需的字段验证器会返回一个错误的erorr。当我单击发送按钮时,我得到“选择至少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" />

问题:您为此问题推荐了哪些替代代码或解决方法?

感谢您的期待!

1 个答案:

答案 0 :(得分:0)

编辑: CausesValidation="true"

中添加"lbCarriers"

我已从第一个列表框中删除了Autopost="true",即“lbCarriers”,它现在正在运行。