C# 如何在数据库中为单独的日期-月份-年份输入有效日期

C# 如何在数据库中为单独的日期-月份-年份输入有效日期,c#,asp.net,C#,Asp.net,我在我的项目中有一个登记表,我使用了三个下拉列表来输入日期、月份和年份。在此日期中,通过codebehind方法添加到dropdownlist: private void Add_Date() { ddl_dat.Items.Add(new ListItem("-Date-", "-1")); for (int j = 0; j < 31; j++) { var newOption = new ListItem("" + (j + 1).ToStri

我在我的项目中有一个登记表,我使用了三个下拉列表来输入日期、月份和年份。在此日期中,通过codebehind方法添加到dropdownlist:

private void Add_Date()
{
    ddl_dat.Items.Add(new ListItem("-Date-", "-1"));
    for (int j = 0; j < 31; j++)
    {
        var newOption = new ListItem("" + (j + 1).ToString(), j.ToString());
        ddl_dat.Items.Add(newOption);
    }
}

其他月份采用相同的方法。但我认为这不是解决这个问题的正确方法。有人有什么建议吗?

由于这是ASP.NET,您可以使用
UpdatePanel
动态地通过AJAX填充日期组合框的内容。然后可以使用
DateTime.DaysInMonth()
来确定一个月的确切天数。您应该在“月份”和“年份”下拉列表中的“已选择的索引已更改”中更新日期组合框。这样,您的用户将无法在第一时间选择错误的日期,因此无需处理任何错误


另外,JQuery中还有Javascript日历,可以让您的生活更轻松。

因为这是ASP.NET,所以您可以使用
UpdatePanel
通过AJAX动态填充日期组合框的内容。然后可以使用
DateTime.DaysInMonth()
来确定一个月的确切天数。您应该在“月份”和“年份”下拉列表中的“已选择的索引已更改”中更新日期组合框。这样,您的用户将无法在第一时间选择错误的日期,因此无需处理任何错误


另外,JQuery中还有Javascript日历,可以让您的生活更轻松。

在提交表单之前应用此检查:

string str = ddl_dat.SelectedValue + "/" + ddl_mon.SelectedValue + "/"
                + ddl_year.SelectedValue;
DateTime dt;
if(!DateTime.TryParse(str, out dt))
    // Invalid date - Show error
else
    // Use date from dt here

如果日期无效
TryParse
将返回false。否则,您可以使用从
dt
变量生成的日期进行进一步操作。

在提交表单之前应用此检查:

string str = ddl_dat.SelectedValue + "/" + ddl_mon.SelectedValue + "/"
                + ddl_year.SelectedValue;
DateTime dt;
if(!DateTime.TryParse(str, out dt))
    // Invalid date - Show error
else
    // Use date from dt here
如果日期无效
TryParse
将返回false。否则,您可以使用
dt
变量的结果日期进行进一步操作。

应该会对您有所帮助

DateTime dateValue;
string dateString = ddl_year.SelectedValue + "-" + ddl_mon.SelectedValue + "-" + ddl_dat.SelectedValue;
if (! DateTime.TryParse(dateString, out dateValue)) {
    //Error...
}
我应该帮助你

DateTime dateValue;
string dateString = ddl_year.SelectedValue + "-" + ddl_mon.SelectedValue + "-" + ddl_dat.SelectedValue;
if (! DateTime.TryParse(dateString, out dateValue)) {
    //Error...
}

这样做的一种方法是可能重复这一点。不要忘记只有30天的月份,还有闰年——二月实际上有29天。使用日历控件也是一个不错的选择。可能的重复是一种方法。不要忘记只有30天的月份,还有闰年——二月实际上有29天。使用日历控件也是一个不错的选择。感谢您回答dotnet。你的回答很好。但是ajax在我的服务器上不起作用,所以我想通过编码来实现。感谢您回答dotnet。你的回答很好。但是ajax在我的服务器上不起作用,所以我想通过编码来实现。kryssthanel Onr错误在您的答案中您不声明datevaluekryssthanel Onr错误在您的答案中您不声明DateValuer