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>
<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似乎没有看到控件中的任何值.
我是对的,你想强迫用户做出选择,并且该选择应该适合你的regex?
如果是这样,您可以轻松地将RequiredFiledValidator类添加到控件中dropdown,InitialValue为其提供等于您的-- Select --项目值的属性,以便用户将被迫选择不等于 的内容-- Select --,并且该值将通过控件进行验证RegularExpressionValidator。
来自 MSDN:
仅当关联输入控件的值
InitialValue在失去焦点时与此匹配时,验证才会失败。 在执行验证之前,属性和输入控件中的字符串InitialValue都会被修剪以删除字符串前后的多余空格。如果输入控件为空,则验证成功。如果关联的输入控件需要值,请
RequiredFieldValidator在该控件之外使用另一个控件RegularExpressionValidator。
你还应该在RegularExpressionValidator课堂上注意到,
除非浏览器不支持客户端验证或显式禁用客户端验证(通过将该属性设置为
EnableClientScriptfalse),否则都会执行服务器端和客户端验证。
所以你的代码应该是这样的:
<asp:DropDownList ID="ddNames" runat="server">
</asp:DropDownList>
<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)