Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net RequiredFieldValidator始终无效_Asp.net_Requiredfieldvalidator - Fatal编程技术网

Asp.net RequiredFieldValidator始终无效

Asp.net RequiredFieldValidator始终无效,asp.net,requiredfieldvalidator,Asp.net,Requiredfieldvalidator,我在表单上有三个RequiredFieldValidator控件(用于下拉列表和文本框),即使用户输入数据,它们也总是使页面无效 <div class="control-group"> <asp:Label ID="HouseTypeLabel" runat="server" Text="Type of home" class="control-label asterisk" meta:resourcekey="HouseTypeLabelResourc

我在表单上有三个
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>

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

有什么想法吗?谢谢

编辑:提交按钮在下面

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


您缺少所需字段验证器的
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
添加到所有必需的字段验证器以及调用它们的按钮事件中。确保你不改变名字。对所有人保持一致。

您应该尝试从asp.net标记中删除
EnableClientScript=“false”

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

我今天花了一个小时来解释为什么在VisualStudio2012中,一个看似正确的RequiredFieldValidator总是返回false

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

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

我想这就是VS的“特性”之一


我猜旧RequiredFieldValidator对象或其他东西的自动生成代码中出现了一些问题,但我从未深入研究过

我遇到了一个类似这样的问题,我有一个带验证器的用户控件和一个验证组

现在我在一个页面上放置了这个usercontrol两次,一次只显示其中一个


结果是visible ValidationSummary显示了来自两个控件的错误,因此即使当前可见的usercontrol有效,也会在ValidationSummary中产生错误消息。

更改这部分代码:

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


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

如果删除验证程序上的meta:resources(仅用于测试),会发生什么?您可以调试吗?回发是否启动?回发是否启动,删除元:资源不起任何作用。请关闭visual studio,然后重新启动。只是想!结果一切都很好。发生的事情是,我在
Page_Load()
上用数据预先填充了表单,在填充之前,我没有使用
if(!Page.IsPostBack){/*在这里填充字段*/}
。因此,在我启动
SubmitButton_Click()
之前,字段被旧值(在我的例子中为空)覆盖。这就是为什么
RequiredFieldValidator
控件会启动的原因。感谢大家的支持。我添加了您提到的
ValidationGroup=“vgSave”
,但它没有做任何事情。不,我不希望发生任何客户端验证。谢谢你的主意。