2016-05-25 6 views
-1

я получил следующий код:Указанный приказ недействителен в ASP.NET?

var model = new List<LogModels>(); 

while (reader.Read()) 
{ 
    var logContent = new LogModels(
     (int)reader["id"], 
     (string)reader["response"], 
     (string)reader["language"], 
     (string)reader["country"], 
     (string)reader["location"], 
     (string)reader["os"], 
     (string)reader["browser"], 
     (string)reader["type"], 
     (DateTime)reader["date"] 
    ); 

    model.Add(logContent); 
} 

Но я получаю следующее сообщение об ошибке:

An exception of type 'System.InvalidCastException' occurred in Speed Services.dll but was not handled in user code 

Additional information: Specified cast is not valid. 

Изображение: https://i.gyazo.com/adf04b8e271bb53c93303d5774a48f80.png

Моя модель (LogModels) выглядит следующим образом:

public int id { get; set; } 
public string response { get; set; } 
public string language { get; set; } 
public string country { get; set; } 
public string location { get; set; } 
public string os { get; set; } 
public string browser { get; set; } 
public string type { get; set; } 
public DateTime date { get; set; } 

Кто-нибудь знает, что может быть проблемой, поскольку я похоже, не найти проблему?

+0

Полного сообщения об исключении является более полезным, чем 1000 изображений, но я предполагаю, что один из этих полей не от типа вы ожидаете (сообщение будет сказать вам, какой из них ...) Из Конечно, я говорю о объекте читателя (который, я полагаю, является DB DataReader), а не в LogModels класса View Model. –

+1

Вы должны сузить, какой из них проваливается. Я бы поставил либо «id», либо «date». – mason

+0

Вы проверили, является ли «дата» текущей записи нулевой? Возможно, попробуйте изменить 'DateTime' на тип с нулевым значением (например,' DateTime? ') – bassfader

ответ

0
var model = new List<LogModels>(); 

while (reader.Read()) 
{ 
    var logContent = new LogModels(
     Convert.ToInt32(reader["id"].Tostring()), 
     (string)reader["response"], 
     (string)reader["language"], 
     (string)reader["country"], 
     (string)reader["location"], 
     (string)reader["os"], 
     (string)reader["browser"], 
     (string)reader["type"], 
     Convert.ToDateTime(reader["date"].Tostring()) 
    ); 

    model.Add(logContent); 
} 

проблема с литьем из-за целого числа или значения даты и времени. (int)reader["Id"] вместо Convert.ToInt32(reader["Id"].Tostring()) (DateTime)reader["date"] вместо Convert.ToDateTime(reader["date"].Tostring())

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