我希望用户在DropDownList
中进行有效选择,但我不想将任何选择作为默认选项,因此默认选择的值为-- Select --
。我使用RegularExpressionValidator
仅接受包含文字逗号的选定值(因为有效项格式为LastName, FirstName
)。
然而,我很困惑如何让验证器查找Selected值!我真的不愿意将其作为服务器级别的验证,如果可能的话,我想保持它像Regex验证器一样简单。
以下是代码:
<asp:DropDownList ID="ddNames" runat="server">
</asp:DropDownList>
<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似乎没有看到控件中的任何值。
答案 0 :(得分:3)
我是否正确,您想强制用户进行选择,并且该选择应该适合您的regex
?
如果是这样,您可以轻松地将RequiredFiledValidator
类添加到dropdown
控件中,将InitialValue
属性提供给它等于您的-- Select --
项值,这样用户就会被迫选择不等于-- Select --
的内容,此值将通过RegularExpressionValidator
控件进行验证。
来自MSDN:
只有在失去焦点时相关输入控件的值与此
InitialValue
匹配时,验证才会失败。 修剪InitialValue
属性和输入控件中的字符串,以便在执行验证之前删除字符串前后的额外空格。如果输入控件为空,则验证成功。如果关联的输入控件需要值,请使用
RequiredFieldValidator
控件之外的RegularExpressionValidator
控件。
另外,您应注意RegularExpressionValidator
课程,
执行服务器端和客户端验证,除非浏览器不支持客户端验证或明确禁用客户端验证(通过将
EnableClientScript
属性设置为假)。
所以你的代码应该是这样的:
<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 --" />
答案 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>