上で実行時バインディングを実行することはできません私はこのコードからCannot perform runtime binding on a null reference
エラーを引き起こしているかを把握しようとしている:MVC5/C#は - null参照
var query = "SELECT Id, UserName, List_Order, LoggedIn " +
"FROM AspNetUsers" +
"WHERE LoggedIn = 1" +
"ORDER BY List_Order ASC";
var conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
var cmd = new SqlCommand(query, conn);
conn.Open();
var rdr = cmd.ExecuteReader();
var n = 0;
while(rdr.Read())
{
if (Convert.ToString(rdr["UserName"]) != null)
{
ViewBag.speakers[n] = new string[4] {
Convert.ToString(rdr["Id"]),
Convert.ToString(rdr["UserName"]),
Convert.ToString(rdr["List_Order"]),
Convert.ToString(rdr["LoggedIn"])
};
//Exception Details: Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: Cannot
//perform runtime binding on a null reference
n++;
}
}
n++
増分は、このエラーの原因のようですし、なぜか分からない。
可能な解決策を反映するようにコードが更新されました。ただし、エラーは依然として残ります。ヌル列値に.ToString()
方法はCannot perform runtime binding on a null reference
をもたらすことができる呼び出す
if (!string.IsNullOrWhiteSpace(Convert.ToString(rdr["UserName"]))) {
List<string> speakers = new List<string>();
speakers.Add(Convert.ToString(rdr["Id"]));
speakers.Add(Convert.ToString(rdr["UserName"]));
speakers.Add(Convert.ToString(rdr["List_Order"]));
speakers.Add(Convert.ToString(rdr["LoggedIn"]));
ViewBag.speakers[n] = speakers;
n++;
}
チェックアウト[この同様のポスト](http://stackoverflow.com/questions/28235162/cannot -perform-runtime-binding-on-a-null-reference-empty-excel-cells) –
@LuisLavieriコードを更新しましたが、エラーはまだ表示されます。 –
'if'も更新しましたか?今度は次のようになります: 'if(!string.IsNullOrWhiteSpace(Convert.ToString(rdr [" UserName "])))' –