我正在制作字符串" 1234,5678,9101,1213,"到一个数组,以便我可以遍历这个数组并插入数据库列名称" CardID "其数据类型为 int 。
错误讯息:
异常详细信息:System.FormatException:输入字符串不在 格式正确。
即使出现错误,循环中的值也会被插入到数据库表中,这有多么奇怪。
文件: 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();
}
答案 0 :(得分:3)
您的字符串“1234,5678,9101,1213”以分隔符(“,”)结尾,因此String.Split返回的数组的最后一个元素将是空字符串。将空字符串传递给Convert.toInt32是格式错误。
您可以通过指定S tringSplitOptions.RemoveEmptyEntries来避免此行为:
model.CardsNumbers.Split(',', StringSplitOptions.RemoveEmptyEntries);
RemoveEmptyEntries - 返回值不包含包含空字符串的数组元素