【问题标题】:how to enter valid date in database for separate date month year如何在数据库中为单独的日期月年输入有效日期
【发布时间】:2013-11-22 09:39:51
【问题描述】:

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

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

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

【问题讨论】:

标签: c# asp.net


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    另外,JQuery 中提供了 Javascript 日历,可以让您的生活更轻松。

    【讨论】:

    • 感谢您回答 dotnet。你的回答很好。但是 ajax 不能在我的服务器上运行,所以我想通过编码来实现。
    【解决方案3】:

    DateTime.TryParse 应该可以帮到你。

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

    【讨论】:

    • kryssthanel Onr 错误在你的答案中你没有声明日期值
    猜你喜欢
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2015-09-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多