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