2016-05-25 28 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. 

を画像:

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; } 
https://i.gyazo.com/adf04b8e271bb53c93303d5774a48f80.png

マイモデル(LogModels)はこのようになります

誰かが問題が何であるかを知っていますか?問題が見つからないようですか?

+0

完全な例外メッセージが1000枚の画像よりも有用であるが、私はそれらの分野の一つは、あなたが期待するタイプではないと思うだろう(メッセージはあなたを教えてくれる1 ...)のもちろん私はあなたのView ModelクラスLogModelsではなく、読者オブジェクト(私はDB DataReaderだと思います)について話しています。 –

+1

どちらが失敗しているかを絞り込む必要があります。私は 'id'か' date'のどちらかを賭けるでしょう。 – mason

+0

現在のレコードの 'date'がヌルかどうかチェックしましたか?たぶん、 '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); 
} 

整数型またはdatetime値のためのキャストの問題です。 (int)reader["Id"]代わりのConvert.ToInt32(reader["Id"].Tostring()) (DateTime)reader["date"]代わりのConvert.ToDateTime(reader["date"].Tostring())

関連する問題