Входная строка была не в правильном формате при преобразовании, вставьте значения в базу данных внутри цикла - PullRequest
0 голосов
/ 29 апреля 2018

Я превращаю строку " 1234,5678,9101,1213, " в массив, чтобы я мог перебрать этот массив и вставить в имя столбца базы данных " CardID"тип данных которых int .

Сообщение об ошибке:

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

Странно, что значения из цикла get вставляются в таблицу базы данных даже при наличии ошибки.

Файл : CardsController.cs

//1234,5678,9101,1213,
string[] CardNumbers = model.CardsNumbers.Split(',');
foreach (string CardNumber in CardNumbers)
{
    Card Card = new Card();
    Card.CardID = Convert.ToInt32(CardNumber); //Input string was not in a correct format.
    Card.TaxPayerTIN = model.TaxPayerTIN;
    Card.PortID = model.PortID;
    Card.AddedUserID = 1;
    Card.AddedDateTime = DateTime.Now;

    db.Cards.Add(Card);
    db.SaveChanges();

}

1 Ответ

0 голосов
/ 29 апреля 2018

Ваша строка "1234,5678,9101,1213" заканчивается символом-разделителем (","), поэтому последний элемент массива, возвращаемый String.Split , будет пустой строкой. Передача пустой строки в Convert.toInt32 является ошибкой формата.

Вы можете избежать этого поведения, указав S tringSplitOptions.RemoveEmptyEntries :

model.CardsNumbers.Split(',', StringSplitOptions.RemoveEmptyEntries);

RemoveEmptyEntries - Возвращаемое значение не включает элементы массива, содержащие пустую строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...