int.parse出错

时间:2012-02-23 09:06:39

标签: c# asp.net

输入字符串的格式不正确。在这一行:

int total = 0;
total = int.Parse(TextBox2.Text) + int.Parse(TextBox4.Text) + int.Parse(TextBox6.Text) + 
        int.Parse(TextBox8.Text) + int.Parse(TextBox10.Text) + int.Parse(TextBox12.Text) + 
        int.Parse(TextBox14.Text) + int.Parse(TextBox16.Text);
Label1.Text = total.ToString(); 

我想将值传递给另一个页面。 这是什么意思? T_T 在此先感谢:)

protected void Button1_Click(object sender, EventArgs e)
{
    Session["Month"] = DropDownList2.SelectedValue;
    Session["expen1"] = TextBox1.Text;
    Session["expen2"] = TextBox3.Text;
    Session["expen3"] = TextBox5.Text;
    Session["expen4"] = TextBox7.Text;
    Session["expen5"] = TextBox9.Text;
    Session["expen6"] = TextBox11.Text;
    Session["expen7"] = TextBox13.Text;
    Session["expen8"] = TextBox15.Text;

    int totalvalue = 0;
    totalvalue = int.Parse(TextBox2.Text) + int.Parse(TextBox4.Text) + int.Parse(TextBox6.Text) + int.Parse(TextBox8.Text) + int.Parse(TextBox10.Text) + int.Parse(TextBox12.Text) + int.Parse(TextBox14.Text) + int.Parse(TextBox16.Text);
    Label1.Text = totalvalue.ToString(); 

    Session["price1"] = TextBox2.Text;
    Session["price2"] = TextBox4.Text;
    Session["price3"] = TextBox6.Text;
    Session["price4"] = TextBox8.Text;
    Session["price5"] = TextBox10.Text;
    Session["price6"] = TextBox12.Text;
    Session["price7"] = TextBox14.Text;
    Session["price8"] = TextBox16.Text;
    Session["total"] = Label1.Text;

    Server.Transfer("sum.aspx");


}

我想将结果存储在sum.aspx中。

8 个答案:

答案 0 :(得分:2)

如果您的任何TextBox值为null或不是数字,则会中断。为了实现此目的,所有TextBox值都需要具有默认值0,并且您必须将TextBox的输入限制为数字。

答案 1 :(得分:0)

如果任何文本框为空,您将获得异常,因为无法解析空文本。 请改用int.TryParse

答案 2 :(得分:0)

  这意味着什么?

其中一个TextBox包含一个无法解析为整数的文本。

答案 3 :(得分:0)

检查每个文本框数据应该是数字。如果尝试输入字符串并使用int.parse进行验证,则会出现此错误。

答案 4 :(得分:0)

这意味着其中一个文本框值(TextBox#.Text)包含一个无法“转换”为整数的值。

文本框中有什么值?例如,如果文本框包含非数字字符,则无法转换,因为字母“a”没有数字值。

答案 5 :(得分:0)

这意味着对int.Parse的一个调用引发了异常,因为文本值不是可以解析为整数的值(例如,文本是非数字值)。

更好的方法是:

var textBoxesToParse = new [] { TextBox2, TextBox4, TextBox6, TextBox8, TextBox10, TextBox12, TextBox14, TextBox16 };

int total = 0;

foreach (var textBox in textBoxesToParse)
{
    int textBoxValue;

    if(int.TryParse(textBox.Text, out textBoxValue))
    {
        total += textBoxValue;
    }
    else
    {
        // The textbox had an invalid value, up to you what you need to do here.
    }
}

答案 6 :(得分:0)

在解析之前,请使用某种输入掩码或验证,而不是使用文本框并解析您信任的文本。或者,使用不同的控件,如数字向上/向下或数字微调器。

您需要了解如何处理异常,何时使用try parse以及何时使用解析......

答案 7 :(得分:0)

如上所述,错误是您的一个文本框具有空白或非数字值。

您可以使用RegularExpressionValidator,以便仅在值为数字时才允许用户提交表单。

<asp:RegularExpressionValidator ID="RegularExpressionValidator7" runat="server"    
 ControlToValidate="txtLastName"Display="Dynamic" ErrorMessage="Numeric characters only"
 ForeColor="Red" ValidationExpression="^[0-9]*$"
  

此外,您还应该使用tryParseInt32.Parse();如果传递空字符串,后者返回0。