有人可以建议如何为Web窗体日历控件实现自定义验证器吗?显然,RequiredValidator和CustomValidator都不能与Calendar控件一起使用。
Microsoft提供的一个解决方案是扩展日历:
How to extend a Web form control to work with the validation controls by using Visual C#
有没有更简单的解决方案?
答案 0 :(得分:3)
我终于以这种方式工作了:
<asp:Calendar ID="startCalendar" CssClass="startDate"
OnSelectionChanged="Selection_Changed" runat="server"></asp:Calendar>
<asp:CustomValidator ID="dateCustVal" OnServerValidate="DateCustVal_Validate"
runat="server"></asp:CustomValidator>
protected void DateCustVal_Validate(object source, ServerValidateEventArgs args)
{
if (startCalendar.SelectedDate == null
|| startCalendar.SelectedDate == new DateTime(0001, 1, 1, 0, 0, 0))
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
答案 1 :(得分:1)
我认为你应该使用Ajax Control Toolkit(下载来自:http://www.asp.net/ajaxlibrary/AjaxControlToolkitSampleSite/) 然后,您可以根据需要格式化日历。一个例子是这样的:
<ajaxToolkit:Calendar runat="server"
TargetControlID="Date1"
CssClass="ClassName"
Format="MMMM d, yyyy"
PopupButtonID="Image1" />
如果您需要确保选择了日期,则可以执行以下操作:
<ajaxToolkit:ValidatorCalloutExtender
runat="Server"
ID="PNReqE"
TargetControlID="Date1"
Width="350px"
HighlightCssClass="highlight"
CssClass="CustomValidatorCalloutStyle"
PopupPosition="Right"
WarningIconImageUrl="warning.gif"
CloseImageUrl="close.gif" />