C# 必填字段验证错误消息适用于文本框,但不适用于下拉列表

C# 必填字段验证错误消息适用于文本框,但不适用于下拉列表,c#,asp.net,C#,Asp.net,在我的aspx页面中,我有两个搜索选项 一种是通过文本框搜索产品。 另一种是通过下拉选择查看类别 这就是我在.aspx文件中所做的 <div class="searchbox"> <strong>Search by Product Name<br /></strong> <br /> <asp:TextBox ID="TextBox1" runat="server"><

在我的aspx页面中,我有两个搜索选项

一种是通过文本框搜索产品。 另一种是通过下拉选择查看类别

这就是我在.aspx文件中所做的

<div class="searchbox">
        <strong>Search by Product Name<br /></strong> 
        <br />
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> &nbsp;
        <asp:Button ID="Button8" runat="server" OnClick="Search_Product"  Text="Search Product" />
&nbsp;
            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="Please enter a product name"></asp:RequiredFieldValidator>
        &nbsp;<asp:Label ID="Label3" runat="server"></asp:Label>
        <br />
        <br />
        </div>

        <br />

        <div class="searchbox">
             <strong>View by Category: View Product on Category Selection</strong><br />
            <br />
            <asp:DropDownList AppendDataBoundItems ="true" ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="Product_Category_Name" DataValueField="Product_Category_Name">
                <asp:ListItem>Select a Category</asp:ListItem>
            </asp:DropDownList>
             <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:Grocery_DemoConnectionString %>" SelectCommand="SELECT Product_Category_Name FROM Product_Category"></asp:SqlDataSource>
&nbsp; 
            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="DropDownList1" ErrorMessage="Please select a category"></asp:RequiredFieldValidator>
            <br />
            <br />
            <asp:Button ID="Button9" runat="server"  OnClick="View_Product" CausesValidation="false" Text="View Product" />
            &nbsp;
            </div>
如果我在文本框中搜索一个产品并单击搜索按钮,它将显示网格视图显示(如果它在表中有数据)。如果搜索结果与表中的数据不匹配,则会显示一条标签文本消息:找不到您的产品。如果我保持文本框为空并单击搜索按钮,它会显示一条必填字段验证消息,请输入产品名称。 通过文本框使用产品搜索选项一切正常

另一方面,当我从下拉列表中选择一个类别并单击查看按钮时,它工作得非常好。 现在的问题是,如果我没有从下拉列表中选择任何类别并单击“查看”按钮,则它不会显示所需的字段验证错误消息“请选择一个类别”,同时它会将网格视图显示变为空白,这是我不希望看到的

我试图实现的是,如果未从下拉列表中选择类别,然后单击视图按钮,则应显示所需字段验证错误消息请选择类别,同时不应将默认网格视图显示更改为空白

如果.aspx文件或.cs中的代码有任何错误,那么提供建议的解决方案语法将非常有用

请试试这个

<asp:RequiredFieldValidator runat="server" ControlToValidate="DropDownList1"
cssclass="required" display="dynamic" errormessage="Please select a category" setfocusonerror="true"
initialvalue="0"></asp:RequiredFieldValidator>
添加display=dynamicproperty。

为TextBox1指定ValidationGroup所需的字段验证器和搜索按钮控件,如下所示:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ValidationGroup="SearchByName" ErrorMessage="Please enter a product name"></asp:RequiredFieldValidator>

<asp:Button  ValidationGroup="SearchByName"  ID="Button8" runat="server" OnClick="Search_Product"  Text="Search Product" />
注意:我已经从查看产品按钮中删除了CausesValidation=false属性

将默认列表项的值设置为-1,然后指定下拉验证程序的初始值

<asp:ListItem value="-1">Select a Category</asp:ListItem> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="DropDownList1" InitialValue="-1" ErrorMessage="Please select a category" ValidationGroup="SearchByCategory">

我用过你的密码。。。当我单击view按钮时,它仍然没有显示所需的字段验证错误消息,并且它正在将grid view显示变为空白。您也可以参考click event code部分:是的,您可以按照Beginit的建议执行这就是我现在所做的:。。。但是,即使我没有从下拉列表中选择类别,它仍然没有显示验证错误消息,并且它仍然将网格视图变为空白。此外,如果您再次参考我的.aspx代码,我是否在中出错,是否还需要对for下拉列表进行任何更改?事实上,您只需要将ValidationGroup=SearchByCategory属性添加到下拉列表验证器,而不是下拉列表本身。检查更新的答案我用了你的代码。。。正在对文本框进行验证。。。但是验证对下拉列表不起作用。。。当我不选择类别时。。。它应该显示验证消息,但不显示验证消息。。。相反,它将默认的网格视图显示变为空白。您是否在下拉验证程序和查看产品按钮上指定了ValidationGroup=SearchByCategory?另外,确保已从ViewProduct按钮中删除CausesValidation=false。如果仍不起作用,请尝试以下操作:选择一个类别是我已删除CausesValidation=false,并在validator和view products下拉列表按钮中添加ValidationGroup=SearchByCategory:和
        <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="DropDownList1" ErrorMessage="Please select a category" ValidationGroup="SearchByCategory"></asp:RequiredFieldValidator>

        <asp:Button ID="Button9" runat="server"  OnClick="View_Product" ValidationGroup="SearchByCategory"   Text="View Product" />
<asp:ListItem value="-1">Select a Category</asp:ListItem> <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="DropDownList1" InitialValue="-1" ErrorMessage="Please select a category" ValidationGroup="SearchByCategory">