【发布时间】:2016-11-10 15:43:00
【问题描述】:
我试图从这段代码中找出导致Cannot perform runtime binding on a null reference 错误的原因:
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++;
}
【问题讨论】:
-
@LuisLavieri 我更新了代码,仍然出现错误。
-
您是否也更新了
if?现在应该是:if(!string.IsNullOrWhiteSpace(Convert.ToString(rdr["UserName"]))) -
@LuisLavieri 是的,我确实把它改成了那样,但没有改变。
-
我看到您正在尝试以数组形式访问
ViewBag。从另一个帖子尝试this answer。
标签: c# exception asp.net-mvc-5 runtime-error nullreferenceexception