如何验证DropDownList中的选定值?

时间:2015-03-05 20:03:17

标签: c# asp.net regex validation

我希望用户在DropDownList中进行有效选择,但我不想将任何选择作为默认选项,因此默认选择的值为-- Select --。我使用RegularExpressionValidator仅接受包含文字逗号的选定值(因为有效项格式为LastName, FirstName)。

然而,我很困惑如何让验证器查找Selected值!我真的不愿意将其作为服务器级别的验证,如果可能的话,我想保持它像Regex验证器一样简单。

以下是代码:

<asp:DropDownList ID="ddNames" runat="server">
</asp:DropDownList>
&nbsp;
<asp:RegularExpressionValidator ID="RegexValidator" runat="server" 
    ControlToValidate="ddNames" ValidationExpression=".*\,.*" 
    ErrorMessage="Select a Valid User">
</asp:RegularExpressionValidator>

下拉值为:

-- Select --
Smith, John B
Jones, Bill
Wilkinson, Harmony
Hull, Cordell
Hill, Faith

有没有办法将验证器瞄准SelectedValue?如图所示,Validator似乎没有看到控件中的任何值。

2 个答案:

答案 0 :(得分:3)

我是否正确,您想强制用户进行选择,并且该选择应该适合您的regex? 如果是这样,您可以轻松地将RequiredFiledValidator类添加到dropdown控件中,将InitialValue属性提供给它等于您的-- Select --项值,这样用户就会被迫选择不等于-- Select --的内容,此值将通过RegularExpressionValidator控件进行验证。

来自MSDN:

  

只有在失去焦点时相关输入控件的值与此InitialValue匹配时,验证才会失败。   修剪InitialValue属性和输入控件中的字符串,以便在执行验证之前删除字符串前后的额外空格。

     

如果输入控件为空,则验证成功。如果关联的输入控件需要值,请使用RequiredFieldValidator控件之外的RegularExpressionValidator控件。

另外,您应注意RegularExpressionValidator课程,

  

执行服务器端和客户端验证,除非浏览器不支持客户端验证或明确禁用客户端验证(通过将EnableClientScript属性设置为假)。

所以你的代码应该是这样的:

<asp:DropDownList ID="ddNames" runat="server">
</asp:DropDownList>
&nbsp;
<asp:RegularExpressionValidator ID="RegexValidator" runat="server" 
    ControlToValidate="ddNames" ValidationExpression=".*\,.*" 
    ErrorMessage="Select a Valid User" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
  ErrorMessage="*" ControlToValidate="ddNames" 
InitialValue="-- Select --" />

答案 1 :(得分:2)

您可以使用RequiredFieldValidator。

        <asp:DropDownList ID="ddNames" runat="server">
        </asp:DropDownList>

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
 ErrorMessage="Please select" ControlToValidate="ddNames" 
InitialValue="-- Select --"></asp:RequiredFieldValidator>