FormatException: входная строка имеет неправильный формат

Исключение всегда вызывается следующим оператором..:

    protected void DataList2_SelectedIndexChanged(object sender, EventArgs e)
    {
x= should get the primary key of the item selected from  a datalist
        Server.Transfer("AnswerQuestion.aspx?x=" + int.Parse(DataList2.DataKeyField) + "&question=" +"bla bla") + "&time=" + DateTime.Now);
    }

Здесь выдается исключение .. :(даже когда я его разделяю int threadID = int.Parse(DataList1.DataKeyField.ToString()); Почему?


person Matrix001    schedule 13.07.2011    source источник
comment
где точно, это может быть либо Parse, либо SelectedValue равно null.   -  person Alexander Beletsky    schedule 13.07.2011
comment
Меня беспокоит параметр x строки   -  person Matrix001    schedule 13.07.2011


Ответы (3)


Ну, я сильно подозреваю, что это был этот звонок:

int.Parse(DataList2.DataKeyField)

Это говорит о том, что DataList2.DataKeyField не является допустимым строковым представлением целого числа в текущей локали. (Кроме того, вы должны вероятно выполнять это форматирование и, возможно, синтаксический анализ с использованием CultureInfo.InvariantCulture. Только пользовательский ввод должен обрабатываться с использованием культуры пользователя.)

person Jon Skeet    schedule 13.07.2011
comment
int threadID = int.Parse(DataList1.DataKeyField.ToString());//Exception... как я могу это исправить - person Matrix001; 13.07.2011
comment
@Matrix001: Исправьте свои данные! Серьезно, мы понятия не имеем, откуда взялись эти данные, но вы явно не можете проанализировать их как целое число. Почему вы решили, что должны уметь? Вы искали, каково фактическое значение? - person Jon Skeet; 13.07.2011
comment
Поле ключа данных — это поля, которые должны быть возвращены в ключе данных для выбранной строки. Обычно используется для определения значений первичного ключа. Я думаю, что это коллекция или что-то в этом роде. Я пытаюсь получить из нее первичный ключ. - person Matrix001; 13.07.2011
comment
@Matrix001: Вы думаете, это коллекция или что-то в этом роде? Конечно, вы должны знать, что такое ваши собственные ключи... но похоже, что они не являются строковыми представлениями целых чисел. Не просто догадывайся - узнай наверняка. Мы не можем помочь вам сделать это. - person Jon Skeet; 13.07.2011
comment
Я пытаюсь получить первичные ключи. Судя по тому, что я сейчас читаю, они находятся внутри коллекции DataKeys. Но мне нужно найти индекс списка данных, когда я выбираю определенную строку, а затем передать ее в коллекцию... например. DataKeys[e.Item.ItemIndex]. проблема в том, что метод обработки событий не имеет этого параметра в своем eventargs.. см. код, обновленный выше - person Matrix001; 13.07.2011
comment
@Matrix001: Зачем тебе нужен индекс? Честно говоря, довольно неясно, что происходит внутри вашего кода, но я думаю, что это не имеет отношения к вашему фактическому вопросу, поэтому ваш код выдавал исключение. Думаю, я достаточно ясно ответил на этот вопрос: вы пытаетесь преобразовать строку в целое число, а это просто не целое число. Если вы хотите обсудить свою более широкую проблему, я предлагаю вам начать новый вопрос для этого после прочтения tinyurl.com/so -подсказки - person Jon Skeet; 13.07.2011
comment
Хорошее предложение.. я постараюсь решить это сам. если я не могу, я открою новый вопрос - person Matrix001; 13.07.2011

Потому что «DataList2.DataKeyField», скорее всего, не поддается разбору и имеет неправильный формат.

person TJHeuvel    schedule 13.07.2011
comment
Но даже если я заменю этот DataList2.DataKeyField.toString.. он будет здесь ThreadID = int.Parse(this.Request[x]); и говорит мне, что ввод строки не был в правильном формате :( - person Matrix001; 13.07.2011

Server.Transfer не поддерживает строку запроса, это не запрос страницы, это просто передача управления другой странице. Храните данные, которые вы хотите передать на другую страницу, в Context.Items['x']=yourVal и используйте их на другой странице.

person hungryMind    schedule 13.07.2011
comment
Как включить элементы в строку? - person Matrix001; 13.07.2011
comment
c-sharpcorner.com/UploadFile/ avi_sanjay/ steveorr.net/faq/passvalues.aspx Прочтите эти статьи. - person hungryMind; 13.07.2011