我试图弄清楚发生了什么,从这个代码导致Cannot perform runtime binding on a null reference
错误:MVC5/C# - 无法执行运行时的空引用结合
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++
增量似乎是这个错误的原因,并我不明白为什么。
更新代码以反映可能的解决方案。但是,错误仍然存在。
具有相同的结果尝试这样做:
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”]))' –