2013-08-27 4 views
1
 if (Session["totalCost"] != null) 
     { 
      if (Session["totalCost"] != "confirm") 
      { 
       totRevenueLabel.Text = totalRevenueInteger.ToString(); 
       totalRevenueInteger += int.Parse(Session["totalCost"].ToString()); 
      } 

однако, когда я выполнил программу, он сказал, строка ввода не положить в правильном форматестрока ввода не был введен правильный формат

, пожалуйста, помогите!

+1

В какой строке он жалуется? Значение 'Session [" totalCost "]' не является «подтверждением», но какова его ценность? –

+0

totalRevenueInteger + = int.Parse (Session ["totalCost"]. ToString()); –

+0

И если вы разместите точку останова на этой линии, каково ее значение? –

ответ

1

Ошибка означает, что строка, которую вы пытаетесь разобрать целое число, фактически не содержит допустимого целого числа.

int i; 
if(int.TryParse(Session["totalCost"].ToString(), out i) 
{ 
    totalRevenueInteger = i; 
} 
+0

, так что я должен делать, пожалуйста, помогите! –

+0

Вы должны распечатать сеанс ["totalCost"] и подумать, почему значение не является целым числом. Как только вы исправите проблему, чтобы значение было целочисленным, поместите в свой код логику проверки, чтобы вы больше не ударили эту проблему. – Kye

1

Если Session["totalCost"].ToString()) является нулевым или пустым int.parse выбросит input string was not put correct format

Попробуйте добавить обработку ошибок или использовать int.TryParse и Provice значение по умолчанию

Пример:

  if (Session["totalCost"] != "confirm") 
     { 
      totRevenueLabel.Text = totalRevenueInteger.ToString(); 

      int value = 0; 
      int.TryParse(Session["totalCost"].ToString(), out value); 

      totalRevenueInteger += value; 
     } 

или

  if (Session["totalCost"] != "confirm") 
     { 
      totRevenueLabel.Text = totalRevenueInteger.ToString(); 

      string value = Session["totalCost"].ToString(); 

      totalRevenueInteger += !string.IsNullOrEmpty(value) ? int.TryParse(value) : 0; 
     } 
+0

Мне еще нужно сеанс ["...."! = Null в верхней части? спасибо –

+0

Я получил это работает, но он добавляет 60 каждый раз, я нажимаю кнопку :( –

+0

Из кода, который мы видим, это потому, что 'Session [" totalCost "]' имеет значение 60. Если это не так, то вы –

2

Ваш разбираем

int.Parse(Session["totalCost"].ToString()); 

Так как предполагается, что Session["totalCost"] имеет числовое значение в виде строки. Но раньше вы делаете:

if (Session["totalCost"] != "confirm") 

, который показывает, что Session["totalCost"] содержит алфавитов в строчном формате. Оба утверждения противоположны друг другу. Надеюсь, теперь вы сможете найти свою проблему.

+0

Я думаю, что код подразумевает, что '[" totalCost "]' не равен 'confirm', то это будет число, поэтому это будет логика кажется прекрасной для меня, пока есть дополнительная проверка перед разбором. –

Смежные вопросы