sommr0 Ответов: 2

System. formatexception: входная строка была не в правильном формате.


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

Сведения Об Исключении: Система.FormatException: входная строка была не в правильном формате.


Что я уже пробовал:

Line 42:         {
Line 43:             var test = Convert.ToString(Session["CID"]);
Line 44:             int q = QAdapter.Insert(Convert.ToInt32("txtserial.Text"), (Convert.ToInt32("0")),
Line 45:                 drpQpapername.SelectedItem.Text, txtEname.Text, txtquestion.Text, 
Line 46:                 txta.Text, txtb.Text, txtc.Text, txtd.Text, DropDownListkey.SelectedItem.Text);

2 Ответов

Рейтинг:
1

OriginalGriff

Просто: пользовательский ввод не был допустимым целым числом.
Решение: не используйте Convert вообще. Всегда используйте соответствующий метод TryParse и сообщайте о проблемах пользователя обратно пользователю вместо того, чтобы предполагать, что он всегда будет печатать правильно.

Dim serial As Integer
If Not Integer.TryParse(txtserial.Text, serial) Then
	' Report problem to user
	...
	Return
End If


sommr0

я пытаюсь разобрать метод но проблема все та же

OriginalGriff

Вы пробовали код, который я вам дал, точно так же, как я его показывал?

sommr0

да

sommr0

я пытаюсь
охраняемых недействительными btnaddquestion_Click(объект отправителя, EventArgs в электронной)
{
var test = Convert.ToString(Session["CID"]);
int q = QAdapter.Вставка(инт.Синтаксический анализ("txtserial.Текст"), (Конвертировать.ToInt32("0")),
drpQpapername.Элемент.Текст, txtEname.Текст, txtquestion.Текст,
txta.Текст, txtb.Текст, txtc.Текст, txtd.Текст, DropDownListkey.Элемент.Текст);
QDT = QAdapter.ОТДЕЛЬНЫЕ ВОПРОСЫ();
GridViewADDQuestion.Источник данных = QDT;
GridViewADDQuestion.Привязку();
}

OriginalGriff

Это именно то, что я тебе показывал?
Нет - он использует int. Parse, который *все равно выдает исключение, если значение плохое*
Вот почему вы используете TryParse - он сообщает об ошибках через логическое возвращаемое значение, позволяя вам обрабатывать его правильно, а не предполагать, что пользовательский ввод в порядке.

sommr0

как это исправить? пожалуйста, исправьте мой код?

OriginalGriff

Посмотри на код, который я тебе уже дал! Я мало что могу добавить к этому-кроме использования преобразованного значения в вашем вызове функции, и я должен предположить, что вы можете решить, как это сделать без посторонней помощи...

Рейтинг:
1

F-ES Sitecore

Convert.ToInt32("txtserial.Text")


Вы преобразуете буквальный текст "txtserial. Text" в число, но, вероятно, хотите использовать свойство Text объекта txtserial, чтобы не использовать кавычки (кавычки обозначают строковый литерал)

Convert.ToInt32(txtserial.Text)


Это все равно будет ошибкой, если то, что находится в txtserial, не может быть преобразовано в число, поэтому google how to use int.Вместо этого попробуй спарситься.


sommr0

Как это исправить?