0

RequiredFieldValidator在表单上有三个控件(用于下拉菜单和文本框),即使用户输入数据,它们也总是使页面无效!

<div class="control-group">
            <asp:Label ID="HouseTypeLabel" runat="server" Text="Type of home" class="control-label asterisk" meta:resourcekey="HouseTypeLabelResource1"></asp:Label>
            <div class="controls">
                <asp:DropDownList ID="HouseType" runat="server" meta:resourcekey="HouseTypeResource1">
                    <asp:ListItem Value="" Text="please select" meta:resourcekey="ListItemResource1"></asp:ListItem>
                    <asp:ListItem Value="1" Text="rancher" meta:resourcekey="ListItemResource2"></asp:ListItem>
                    <asp:ListItem Value="2" Text="two-storey" meta:resourcekey="ListItemResource3"></asp:ListItem>
                    <asp:ListItem Value="3" Text="bi-level" meta:resourcekey="ListItemResource4"></asp:ListItem>
                    <asp:ListItem Value="4" Text="bungalow" meta:resourcekey="ListItemResource5"></asp:ListItem>
                    <asp:ListItem Value="5" Text="bungalow + basement" meta:resourcekey="ListItemResource6"></asp:ListItem>
                </asp:DropDownList>
                <p class="help-block">
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="HouseType" runat="server" EnableClientScript="False" ErrorMessage="Please indicate type of home" meta:resourcekey="RequiredFieldValidator1Resource1"></asp:RequiredFieldValidator>
                </p>
            </div>
</div>
<div class="control-group">
            <asp:Label ID="TotalBedroomsLabel" runat="server" Text="Total number of bedrooms" class="control-label asterisk" AssociatedControlID="TotalBedrooms" meta:resourcekey="TotalBedroomsLabelResource1"></asp:Label>
           <div class="controls">
              <asp:TextBox ID="TotalBedrooms" runat="server" class="input-xlarge" placeholder="" meta:resourcekey="TotalBedroomsResource1"></asp:TextBox>
            <p class="help-block">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate="TotalBedrooms" EnableClientScript="False" runat="server" ErrorMessage="Please enter total number of bedrooms" meta:resourcekey="RequiredFieldValidator2Resource1"></asp:RequiredFieldValidator>
            </p>
          </div>
</div>
<div class="control-group">
            <asp:Label ID="TotalBathroomsLabel" runat="server" Text="Total number of bathrooms" class="control-label asterisk" AssociatedControlID="TotalBathrooms" meta:resourcekey="TotalBathroomsLabelResource1"></asp:Label>
           <div class="controls">
              <asp:TextBox ID="TotalBathrooms" runat="server" class="input-xlarge" placeholder="" meta:resourcekey="TotalBathroomsResource1"></asp:TextBox>
            <p class="help-block">
                <asp:RequiredFieldValidator ID="RequiredFieldValidator3" EnableClientScript="false" runat="server" ControlToValidate="TotalBathrooms" ErrorMessage="Please enter total number of bathrooms" meta:resourcekey="RequiredFieldValidator3Resource2"></asp:RequiredFieldValidator>
            </p>
          </div>
</div>

因此,无论我输入数据还是不输入任何内容,当我单击提交按钮时,都会显示三个错误消息。

有任何想法吗?谢谢。

编辑:提交按钮在下面

<div class="control-group">
<!-- Button -->
<div class="controls">
    <asp:Button ID="SubmitButton" runat="server" Text="Save and Next" class="btn btn-info" meta:resourcekey="SubmitButtonResource1" OnClick="SubmitButton_Click" />
</div>

4

5 回答 5

0

对于原始海报来说可能为时已晚,但万一其他人也有同样的问题:

我今天花了一个小时对为什么在 Visual Studio 2012 中看似正确的 RequiredFieldValidator 总是返回 false 感到沮丧。

我尝试重新启动 VS 并清理/重建,但没有任何效果。

最后,我重命名了目标 TextBox 控件的 ID,并将RequiredFieldValidator 指向了新名称。它立即起作用。

我想是那些 VS 的“功能”之一。

我猜在旧的RequiredFieldValidator 对象的自动生成代码中有些东西搞砸了,但我从来没有深入研究过。

于 2013-09-06T18:51:33.887 回答
0

您缺少ValidationGroup必填字段验证器的属性。

<asp:RequiredFieldValidator ID="RequiredFieldValidator2"  
                            ControlToValidate="TotalBedrooms" 
                            runat="server" 
                            ErrorMessage="Please enter total number of  bedrooms" 
                            ValidationGroup="vgSave">      // add this for all your required field validators and also the button event that invokes them
</asp:RequiredFieldValidator>

注意:添加ValidationGroup到所有必需的字段验证器以及调用它们的按钮事件。确保不要更改名称。对所有人保持相同。

于 2013-04-22T14:36:31.513 回答
0

我有一个很像这样的问题,我有一个带有验证器和验证组的用户控件。

现在我把这个用户控件两次放在一个页面上,一次只显示一个..

这样做的结果是可见的 ValidationSummary 显示了来自两个控件的错误,因此即使当前可见的用户控件是有效的,它也会导致 ValidationSummary 中出现错误消息。

于 2014-08-08T10:33:03.640 回答
0

更改这部分代码:

<asp:DropDownList ID="HouseType" runat="server" meta:resourcekey="HouseTypeResource1">
                    <asp:ListItem Value="" Text="please select" meta:resourcekey="ListItemResource1"></asp:ListItem>

          ....
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="HouseType" runat="server" EnableClientScript="False" ErrorMessage="Please indicate type of home" meta:resourcekey="RequiredFieldValidator1Resource1"></asp:RequiredFieldValidator>

变成这样:

<asp:DropDownList ID="HouseType" runat="server" meta:resourcekey="HouseTypeResource1">
                    <asp:ListItem Value="-1" Text="please select" meta:resourcekey="ListItemResource1"></asp:ListItem>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="HouseType" InitialValue="-1"  runat="server" EnableClientScript="False" ErrorMessage="Please indicate type of home" meta:resourcekey="RequiredFieldValidator1Resource1"></asp:RequiredFieldValidator>

我认为您应该以默认值赋予价值。

<asp:ListItem Value="-1" Text="please select" meta:resourcekey="ListItemResource1"></asp:ListItem>

所以突出显示这部分:Value="-1"

在 asp:RequiredFieldValidator 你应该把InitialValue

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" ControlToValidate="HouseType" InitialValue="-1"  runat="server" EnableClientScript="False" ErrorMessage="Please indicate type of home" meta:resourcekey="RequiredFieldValidator1Resource1"></asp:RequiredFieldValidator>

重试,如果该答案不起作用,请告诉我。

于 2015-05-07T03:37:24.973 回答
-1

您应该尝试EnableClientScript="false"从您的 asp.net 标记中删除。

于 2013-04-22T15:39:10.340 回答