输入字符串格式不正确.c#
本文关键字:不正确 格式 字符串 输入 | 更新日期: 2023-09-27 18:02:28
当预算显示的值小于提交按钮将隐藏的成本显示的金额时,我正在进行验证。但我得到一个错误"输入字符串不是在一个正确的格式。"
下面是我的代码void GetInfo(int ID)
{
var cost = decimal.Parse(txtCost.Text);
var budget = decimal.Parse(txtBudget.Text);
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT ProjectID, ClientID, Name, Description, Location, DateStarted, " +
"DateEstFinished, Budget - ActualCost AS Total, ActualCost, Status FROM Projects WHERE ProjectID=@ProjectID";
cmd.Parameters.AddWithValue("@ProjectID", ID);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.HasRows)
{
while (dr.Read())
{
ltID.Text = dr["ProjectID"].ToString();
ltName.Text = dr["Name"].ToString();
ddlTypes.Text = dr["ClientID"].ToString();
txtName.Text = dr["Name"].ToString();
txtDescription.Text = dr["Description"].ToString();
txtLocation.Text = dr["Location"].ToString();
DateTime dateStarted = DateTime.Parse(dr["DateStarted"].ToString());
txtDateStarted.Text = dateStarted.ToString("MMMM dd, yyyy");
txtStart.Attributes.Add("min", dateStarted.ToString("yyyy-MM-dd"));
DateTime dateFinish = DateTime.Parse(dr["DateEstFinished"].ToString());
txtDateFinish.Text = dateStarted.ToString("MMMM dd, yyyy");
DateTime start = DateTime.Now;
bool validStart = DateTime.TryParse(txtStart.Text, out start);
if (validStart)
txtFinish.Attributes.Add("min", start.AddDays(1).ToString("yyyy-MM-dd"));
txtBudget.Text = dr["Total"].ToString();
txtCost.Text = dr["ActualCost"].ToString();
}
con.Close();
if (budget >= cost)
{
btnSubmit.Visible = false;
}
}
else
{
con.Close();
Response.Redirect("~/Projects/Default.aspx");
}
}
我用:
if (Decimal.Parse(txtBudget.Text) >= Decimal.Parse(txtCost.Text))
{
btnSubmit.Visible = true;
}
else
{
btnSubmit.Visible = false;
}
然后声明一个var decimal
像这样:
Decimal budget;
Decimal cost;
if (!Decimal.TryParse(txtBudget.Text, out budget)) {
btnSubmit.Visible = false;
//TODO: probably you have to show message that txtBudget has incorrect value
}
else if (!Decimal.TryParse(txtCost.Text, out cost)) {
btnSubmit.Visible = false;
//TODO: probably you have to show message that txtCost has incorrect value
}
else {
//TODO: you may find useful to check if cost < 0 or/and budget < 0 etc.
btnSubmit.Visible = budget >= cost;
}
你的问题将是在
DateTime
转换,因为如果它会得到blank
或Null
值则会给出上述误差做下面提供的代码示例,为您的所有代码在哪里使用datetime
if(dr["DateStarted"].ToString() != "")
{
txtDateStarted.Text = Convert.ToDateTime(dr["DateStarted"]).ToString("MMMM dd, yyyy");
}