我在表单上有三个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>
答案 0 :(得分: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
添加到所有必需的字段验证器以及调用它们的按钮事件。确保你不要改名字。保持一致。
答案 1 :(得分:0)
原始海报可能为时已晚,但如果其他人有同样的问题:
今天我花了一个小时对于为什么看似正确的RequiredFieldValidator在Visual Studio 2012中总是返回false感到沮丧。
我尝试重新启动VS并清理/重建,没有任何工作。
最后,我重命名了目标TextBox控件的ID,并将RequiredFieldValidator指向新名称。它立即起作用。
我认为其中一个VS'特征'。
我猜测在旧的RequiredFieldValidator对象的自动生成代码中搞砸了一些东西,但我从未进一步研究过它。
答案 2 :(得分:0)
我有一个很像这样的问题,我有一个带验证器和验证组的用户控件。
现在我将这个用户控件放在一个页面上两次,并且一次只显示其中一个..
结果是可见的ValidationSummary显示了两个控件的错误,因此即使当前可见的usercontrol有效,也会导致ValidationSummary中出现错误消息。
答案 3 :(得分: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>
请突出显示此部分:值=“ - 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>
重新尝试,如果答案不起作用,请告诉我。
答案 4 :(得分:-1)
你应该尝试从你的asp.net标签中删除EnableClientScript="false"
。