J'ai un petit problème avec ASP.NET et C #. Ceci est mon code d'erreur:
Une exception de type 'System.FormatException' s'est produite dans mscorlib.dll mais n'a pas été gérée dans> code utilisateur
Informations complémentaires: Le format de la chaîne d'entrée était incorrect.
protected void Page_Load(object sender, EventArgs e)
{
if(this.IsPostBack == false)
{
Currency.Items.Add(new ListItem("Euro", "0.85"));
Currency.Items.Add(new ListItem("Yen", "11.30"));
Currency.Items.Add(new ListItem("PLN", "4.20"));
Currency.Items.Add(new ListItem("GBP", "5.62"));
}
}
protected void Convert_Click(object sender, EventArgs e)
{
decimal oldAmount;
bool succes = Decimal.TryParse(TextBox.Value, out oldAmount);
if(succes)
{
ListItem item = Currency.Items[Currency.SelectedIndex];
decimal newAmount = oldAmount * decimal.Parse(item.Value);
Result.InnerText = "Result: " + newAmount;
}
}
J'ai essayé Decimal.Parse, Decimal.TryParse et d'autres combinaisons étranges. Maintenant, je suis sûr que le problème concerne les chaînes et leur analyse en décimal. Lorsque j'ai créé la variable de chaîne - il y avait cette même erreur lors de l'analyse. Alors, quelqu'un peut-il me dire quoi faire pour pouvoir convertir String en décimal?
Essayez d'utiliser "0,85" au lieu de "0,85". Je pense que vous pouvez utiliser le point décimal si vous changez de culture . Voici quelques informations supplémentaires: Comment changer le symbole de la virgule décimale dans double.ToString ()?
Veuillez essayer avec l'extrait de code ci-dessous.
CultureInfo info = CultureInfo.GetCultureInfo("es-ES");
string storedValue = "3,85";
decimal oldAmount;
bool succes = Decimal.TryParse(storedValue, NumberStyles.Any, info, out oldAmount);
Utilisez TextBox.Text à la place:
bool succes = Decimal.TryParse(TextBox.Text, out oldAmount);
TextBox.value est faux. YourTextBox.Text est correct ...!
bool success = Decimal.TryParse(TextBox.Text, out oldAmount);