ASP.Net中的格式异常

时间:2017-08-06 21:19:34

标签: c# asp.net

protected void GridEmp_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            //Task 2 for Add button
            if(e.CommandName == "add")
            {
                //code to display footer row
                GridEmp.FooterRow.Visible = true;
            }
            else if(e.CommandName=="save")
            {
                //code to insert a record
                TextBox txtEno = (TextBox)GridEmp.FooterRow.FindControl("txtEmpNo");
                TextBox txtEname =(TextBox)GridEmp.FooterRow.FindControl("txtEmpName");
                TextBox txtEsal = (TextBox)GridEmp.FooterRow.FindControl("txtEmpSal");

                int eNo = int.Parse(txtEno.Text);
                string eName = txtEname.Text;
                double eSal = double.Parse(txtEsal.Text);
                cmd = new SqlCommand("insert into Emp values(@eNo,@eName,@eSal)");
                cmd.Parameters.AddWithValue("@eNo", eNo);
                cmd.Parameters.AddWithValue("@eName", eName);
                cmd.Parameters.AddWithValue("@eNo", eSal);
                conn.Open();
                int i = cmd.ExecuteNonQuery();
                conn.Close();
                if(i==1)
                {
                    lblMsg.Text = "Record in inserted";
                }
                else
                {
                    lblMsg.Text = "Not inserted";
                }
                BindEmp();
            }

我没有在代码中看到任何错误,但即使我使用Parse将字符串转换为int,我仍然会收到格式异常。有人可以帮我确切地说我错了!

enter image description here

1 个答案:

答案 0 :(得分:0)

当您尝试将无法解析的字符串转换为int值时,会引发您看到的异常。既然你还没有提到txtEno.Text的价值,我就不知道具体是什么。无论如何,它都无法转换为int

所以你的错误在于你没有考虑输入无效值的用户。

您应修改代码以使用TryParse代替。这将允许您处理错误输入的无效数据,而不会导致程序崩溃:

TextBox txtEno = (TextBox)GridEmp.FooterRow.FindControl("txtEmpNo");
int eNo;
bool eNoIsValid = int.TryParse(txtEno.Text, out eNo);
if (!eNoIsValid)
{
    // Handle invalid input.
}