输入字符串格式不正确.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");
        }
}

输入字符串格式不正确.c#

我用:

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转换,因为如果它会得到blankNull值则会给出上述误差做下面提供的代码示例,为您的所有代码在哪里使用datetime

if(dr["DateStarted"].ToString() != "")
{
   txtDateStarted.Text = Convert.ToDateTime(dr["DateStarted"]).ToString("MMMM dd, yyyy");
}