如何解决“输入字符串格式不正确”。错误?

时间:2012-09-04 18:21:27

标签: c# asp.net

我尝试了什么:

标记:

 <asp:TextBox ID="TextBox2"   runat="server"></asp:TextBox>

    <asp:Label ID="Label1" runat="server" AssociatedControlID="TextBox2"  Text="Label"></asp:Label>

    <asp:SliderExtender ID="SliderExtender1"  TargetControlID="TextBox2"  BoundControlID="Label1" Maximum="200" Minimum="100" runat="server">
    </asp:SliderExtender>

代码背后:

protected void setImageWidth()
{
    int imageWidth;
    if (Label1.Text != null)
    {
        imageWidth = 1 * Convert.ToInt32(Label1.Text);
        Image1.Width = imageWidth;
    }
}

在浏览器上运行页面后,我得到System.FormatException:输入字符串的格式不正确。

4 个答案:

答案 0 :(得分:6)

问题在于行

imageWidth = 1 * Convert.ToInt32(Label1.Text);

Label1.Text可能是也可能不是int。检查http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx是否有异常。

请改用Int32.TryParse(value, out number)。这将解决您的问题。

int imageWidth;
if(Int32.TryParse(Label1.Text, out imageWidth))
{
    Image1.Width= imageWidth;
}

答案 1 :(得分:2)

如果使用TextBox2.Text作为数值的来源,则必须首先检查它是否存在,然后转换为整数。

如果在调用Convert.ToInt32时文本框为空,您将收到System.FormatException。建议尝试:

protected void SetImageWidth()
{
   try{
      Image1.Width = Convert.ToInt32(TextBox1.Text);
   }
   catch(System.FormatException)
   {
      Image1.Width = 100; // or other default value as appropriate in context.
   }
}

答案 2 :(得分:0)

因为Label1.Text持有Label无法解析为整数,所以需要将关联的文本框的文本转换为整数

imageWidth = 1 * Convert.ToInt32(TextBox2.Text);

答案 3 :(得分:0)

替换为

imageWidth = 1 * Convert.ToInt32(Label1.Text);