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

标签 c# asp.net

我的项目中有一个注册表单,我在上面使用了三个下拉列表来输入日、月和年。在此日期通过代码隐藏方法添加到下拉列表:

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);
    }
}

然后我在月份下拉列表中手动添加 12 个月。我希望用户无法输入 2 月 29 日或 4 月 31 日。 我通过在提交表单之前应用检查来完成此操作:

if (ddl_year.SelectedIndex != -1 && ddl_dat.SelectedIndex != -1 && ddl_mon.SelectedIndex != 0)
{
    if (ddl_mon.SelectedIndex == 2 && ddl_dat.SelectedIndex >= 28)
    {
        lbl_alert.Text = Convert.ToInt32(ddl_dat.SelectedValue)+ 1 + " Febuary Doesn't Exist";
    }
}

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

最佳答案

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

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 变量的结果日期进行进一步操作。

关于c# - 如何在数据库中为单独的日期月份年份输入有效日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20141537/

相关文章:

c# - 使用 C# 使用 Google 数据 API 访问 Google 电子表格

c# - C#中如何只获取字符串的第一个字母

asp.net - 在 ASP.NET 中管理 session 超时

c# - 给新手关于 N 层应用程序的建议

c# - 将图像管道传输到 FFmpeg 标准输入

c# - 如何构建自己的自定义代码片段?

c# - DetailsView.ItemInserted 事件查找主键(DataKey)

c# - C#中如何处理空异常

c# - 使用 jquery 和代码隐藏更新标签

c# - response.writefile 后页面处理停止