Если вы не можете разобрать вашу строку, может быть несколько возможностей ..
Прежде всего, Decimal.TryParse
использует NumberStyles.Number
стиль, и это не включает в себя Currency
стиль. Оба являются составными стилями. Вот почему вам нужно использовать другую перегрузку, которая указывает символ валюты и десятичный разделитель.
Во-вторых, ваш Decimal.TryParse
использует настройки CurrentCulture
по умолчанию. Это означает, что ваш CurrencySymbol
не €
и/или ваш NumberDecimalSeparator
не ,
.
Как лучшее решение, вы можете Clone
CurrentCulture
и установить эти свойства с помощью Currency
style like;
var clone = (CultureInfo) CultureInfo.CurrentCulture.Clone();
clone.NumberFormat.CurrencySymbol = "€";
clone.NumberFormat.NumberDecimalSeparator = ",";
decimal number;
if(decimal.TryParse(((Label)e.Item.FindControl("lblTotal")).Text,
NumberStyles.Currency, clone, out number))
{
// You can use number here
}
Я попробовал это, но возвратил false – magdy
проблема - знак, знак разговора без € –
вопрос был совершенно ясный. Это не должно быть проголосовано. –