Oplossen van “Invoertekenreeks had niet de juiste indeling.” fout?

Wat ik heb geprobeerd:

MarkUP:

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

Code erachter:

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

Nadat ik de pagina in een browser heb uitgevoerd, krijg ik de System.FormatException: invoertekenreeks had niet de juiste indeling.


Antwoord 1, autoriteit 100%

Het probleem is met lijn

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

Label1.Textkan al dan niet int zijn. Controleer.

Gebruik in plaats daarvan Int32.TryParse(value, out number). Dat zal je probleem oplossen.

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

Antwoord 2, autoriteit 17%

Als u TextBox2.Textgebruikt als de bron voor een numerieke waarde, moet deze eerst worden gecontroleerd om te zien of een waarde bestaat en vervolgens worden geconverteerd naar een geheel getal.

Als het tekstvak leeg is wanneer Convert.ToInt32wordt aangeroepen, ontvangt u de System.FormatException. Stel voor om te proberen:

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

Antwoord 3

Omdat Label1.TextLabelvasthoudt, wat niet kan worden geparseerd in een geheel getal, moet je de bijbehorende tekst van het tekstvak converteren naar een geheel getal

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

Antwoord 4

Vervangen door

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

Other episodes