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.Text
kan 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.Text
gebruikt 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.ToInt32
wordt 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.Text
Label
vasthoudt, 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);