Error on int.parse

本文关键字:parse int on Error | 更新日期: 2023-09-27 18:25:27

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

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中。

Error on int.parse

如果您的任何TextBox值是null或不是数字,这将中断。为了使其工作,所有TextBox值都需要具有默认值0,并且必须将TextBox的输入限制为数字。

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

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

如果任何文本框为空,则会出现异常,因为无法解析空文本。请改用int.TryParse

这意味着什么?

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

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

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

文本框中有哪些值?例如,如果文本框包含非数字字符,它将无法转换,因为字母"a"没有数字值。

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

更好的方法是:

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.
    }
}

如前所述,错误是其中一个文本框为空或非数字值。

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

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

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