2010-05-30 97 views
3

我有两组下拉式开始日期和结束日期。每个日期通过从3个独立的下拉菜单中选择一个月份,一天和一年来创建。我目前在所有下拉菜单中都有RequiredFieldValidators(如果没有选择任何东西,它只显示一个*),但我需要验证结束日期是否大于开始日期。我可以关注比较日期背后的逻辑,但就使用的验证方法而言,有人可以帮助我(我基本上需要一次验证6次下拉)吗?我尝试使用客户端JavaScript的自定义验证,但无法让它工作。你甚至可以使用ASP.NET验证控件验证多个下拉菜单吗? (这是我想要做的 - 我总是可以写javascript,但是试图远离这一点)。ASP.NET:验证用于选择日期(月,日,年)的3个下拉框的最佳方法是什么?

谢谢。

回答

4

使用自定义的验证,而不控制,以验证现场完成,然后在你的aspx页面使用:

<script type="text/javascript"> 
<!-- 
    ValidatorHookupControlID("<%= ctrl1.ClientID %>", 
    $get("<%= customValidator.ClientID %>")); 
    ValidatorHookupControlID("<%= ctrl2.ClientID %>", 
    $get("<%= customValidator.ClientID %>")); 
    ValidatorHookupControlID("<%= ctrl3.ClientID %>", 
    $get("<%= customValidator.ClientID %>")); 
//--> 
</script> 

编辑: 我发现了一个教程,更好地解释了什么我的意思是here

+0

我从来不知道这些存在。谢谢! – TheGeekYouNeed 2010-05-30 09:30:57

1

你应该考虑使用日历控件而不是三个下拉菜单。它会为用户提供更好的体验,而且现在大多数日历控件会自动为您处理日期验证问题,如闰年,本地化名称等。在服务器端,您最终会得到一个有效的DateTime值,您可以使用标准比较运算符来确定一个Date是否在另一个之前。

Telerik具有特别好的日历控制。这里有一个演示:

http://demos.telerik.com/aspnet-ajax/calendar/examples/datepicker/validation/defaultcs.aspx

+1

虽然我在这里的消息一致,这是值得任何有大量的**免费**选项可以做到这一点是优秀的,以及...它的客户端,并不一定要完全与ASP.Net相关。 – 2010-05-30 02:17:52

+0

像生日那样的历史日期对于某些日历控件来说也是一种痛苦,因为所有分页都需要及时向后移动。有时候几个DDL是更好的选择。尽管我很欣赏这个观点。 – Laramie 2010-05-30 02:26:27

+0

嗨,尼克,确实有一些很好的免费客户端日历库(例如jQuery UI Datepicker),但即使使用这些库,您仍然需要考虑用户输入的服务器端验证。如果您需要支持不同语言环境的多种日期格式,则必须在此谨慎行事;与.NET全球化良好的服务器端集成是一个好处...一个控件可以说“好吧,我打算使用ja-JP来显示这个日历,因此我最好在ja-JP中解析日期格式它回到我身上!“ – 2010-05-30 03:49:31

相关问题