如何验证DropDownList中的选定值?

Cyb*_*ist 5 c# regex asp.net validation

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

但是,我很困惑如何让验证器查找Selected值!我真的不想让它成为服务器级验证,如果可能的话,我想保持它像Regex Validator一样简单.

这是代码:

<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>
Run Code Online (Sandbox Code Playgroud)

下拉值为:

-- Select --
Smith, John B
Jones, Bill
Wilkinson, Harmony
Hull, Cordell
Hill, Faith
Run Code Online (Sandbox Code Playgroud)

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

VMA*_*Atm 4

我是对的,你想强迫用户做出选择,并且该选择应该适合你的regex
如果是这样,您可以轻松地将RequiredFiledValidator类添加到控件中dropdownInitialValue为其提供等于您的-- Select --项目值的属性,以便用户将被迫选择不等于 的内容-- Select --,并且该值将通过控件进行验证RegularExpressionValidator

来自 MSDN:

仅当关联输入控件的值InitialValue在失去焦点时与此匹配时,验证才会失败。 在执行验证之前,属性和输入控件中的字符串InitialValue都会被修剪以删除字符串前后的多余空格。

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

你还应该在RegularExpressionValidator课堂上注意到,

除非浏览器不支持客户端验证或显式禁用客户端验证(通过将该属性设置EnableClientScriptfalse),否则都会执行服务器端和客户端验证。

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

<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 --" />
Run Code Online (Sandbox Code Playgroud)