我有我选择从日期选择日期文本框。然后我需要验证:1.一个日期被选择2中选择日期不是未来日期。只有今天的日期或以前的任何日期。 3.定期小时添加随着时间的推移小时在该日期不超过20-24小时。
我有一个错误“错误:字符串未被识别为有效的DateTime。”我能请得到一些帮助,在此,我已经花了好几天了这一点。
C#代码:
protected void btnCreate_click(object sender, EventArgs e)
{
try
{
DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
if (DateTxt.Text != "" && PName_dd.Text != "" && CCG_dd.Text != "" && CCL_dd.Text != "")
{
cmd.CommandText = "INSERT INTO TSHistory(EmpId_Int, ProjectCode_Int, TSDate_dt, CCode_Int, TSRhours_nu, TSOhours_nu, JobDescp_vc) VALUES(@GEId, @Pcode, @date, @CCode, @Rhr, @Ohr, @job)";
cmd.Parameters.AddWithValue("@GEId", EmpID.Text);
cmd.Parameters.AddWithValue("@PCode", PCode_txt.Text);
cmd.Parameters.AddWithValue("@date", dt);
cmd.Parameters.AddWithValue("@CCode", CCL_dd.SelectedValue);
cmd.Parameters.AddWithValue("@Rhr", R_txt.Text);
cmd.Parameters.AddWithValue("@Ohr", O_txt.Text);
cmd.Parameters.AddWithValue("@job", JobDesc_txt.Text);
cmd.Parameters.AddWithValue("@Emp", EmpID.Text);
cmd.Connection = Cnn;
Cnn.Open();
cmd.ExecuteNonQuery();
Cnn.Close();
updateUserDetails();
// displayTS();
RefreshSrc();
RefreshDatabase();
}
else
{
// DateTime dt = Convert.ToDateTime();
// var total_hrs = 24;
// DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);
// global.Text = "Done";
if (DateTxt.Text == "")
{
// Response.Write("<script>alert('PLease select date');</script>");
// dateError.Text = "PLease select date";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Select date')", true);
}
else if (DateTxt.Text != "" && dt > DateTime.Today)
{
// Response.Write("<script>alert('Invalid Date');</script>");
// dateError.Text = "Invalid date";
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alertMessage", "alert('Invalid date')", true);
}
}
}
catch (Exception ex)
{
Response.Write("Error: " + ex.Message.ToString());
}
}
ASPX代码:
<div class="form-group col-sm-1">
<asp:TextBox ID="DateTxt" placeholder="Date" CssClass="form-control" runat="server"
ReadOnly="True">
</asp:TextBox>
制作只读=“假”
TextBox控件的内容不能改变,如果只读=“真”。而这就是为什么DateTxt文本值保持为空(“”),它是抛出一个错误:字符串未被识别为有效的DateTime。
当你的文字只包含日期部分,如下更改代码,
DateTime dt = DateTime.ParseExact(DateTxt.Text, "MM/dd/yyyy",CultureInfo.InvariantCulture);
我已经改变了代码一点点。请检查。
DateTime dt = DateTime.ParseExact(DateTxt.Text.Date, "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.AllowWhiteSpaces);