[解決済み】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++;
}
}
というエラーが発生します。
Cannot perform runtime binding on a null reference
は
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++;
}
解決方法は?
あなたのコードには2つの問題があります。
これを検討します。
public ActionResult Index()
{
int n = 0;
ViewBag.speakers[n] = 5;
return View();
}
この単純化されたコードでは
Cannot perform runtime binding on a null reference
speakers が定義されていない (null リファレンス) ためです。
を定義することで修正できます。
speakers
の中で
ダイナミック
ループの前のViewBag。
ViewBag.speakers = new List<string>();
2つ目の課題
ViewBag.speakers[n] = speakers;
のスピーカーがリストである場合、そのスピーカーに
ViewBag.speakers
として
List<List<string>>
を呼び出し
.Add(speakers)
インデックスを使用してアクセスするのではなく(例えば
index was out of range
)
関連
-
非常に詳細な2つのシェルコードの例
-
InstallShield でレジストリキーを取得するスクリプト
-
linux シェル学習ノート 2日目
-
[解決済み】警告メッセージ。In `...` : invalid factor level, NA generated 警告メッセージ:...`は無効な因子レベルです。
-
[解決済み】C++エラー: 予想されるunqualified-idを修正する方法
-
[解決済み】なぜ「Pickle - EOFError.」が発生するのでしょうか?空のファイルを読むと「Ran out of input」と表示されるのはなぜですか?
-
[解決済み】recyclerview アダプタが添付されていないため、レイアウトをスキップしています。
-
[解決済み】ファイルにデータを書き込むときにこのエラーが発生する理由
-
[解決済み] MIPSのフェッチアドレスがワード境界にアライメントされていないため、.align 4を使用したが、まだうまくいかない
-
[解決済み】math.hを含むにもかかわらず、C言語でpow( )への未定義参照【重複あり
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
git eclipseプラグインのインストール
-
linux シェル学習ノート 5日目
-
期限切れのアカウントを自動的に禁止するRouterOSスクリプト
-
InstallShield でホスト名から IP アドレスを取得するコード
-
スプレッドシートに匹敵するオンライングリッドシステム。EditGrid
-
[解決済み】R: predict() で数値 'envir' 引数が長さ1でない。)
-
[解決済み】gitが「変更をコミットするか、マージする前に隠してください」と言うのを解決するにはどうしたらいいですか?
-
[解決済み】C++の<map>に相当するC#は何ですか?[重複しています]
-
[解決済み] ポインタからキャストを使わずに整数を返す [-Wint-conversion] 戻り値の候補を作る
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。