特定の配列変数が設定されているかどうかに基づいて条件付きロジックを持ついくつかのRazorコードがあります。私はそれがnullであり、私のkludgyソリューションに満足していないときに対処する最善の方法を考え出す時間がある。Razorコードでnull変数の可能性を処理する方法は?
ここで何が起こっているかの簡単な例です:
@{
if (ViewBag.Foo != null)
{
double[] bar = new double[ViewBag.Foo.Length];
}
}
後でコードで、私はこのようなものがあります:そのコードで
@if (ViewBag.Foo != null)
{
...some code that uses `bar` goes here ...
}
を実際にするときViewBag.Foo
、私はエラーを取得します無効である。 bar
を使用するコードの2番目のセクションについて不平を表示し、スコープに含まれない例外が発生します。ただし、実行時には、その2番目のセクションは常にスキップされます。
しばらくの間、それをいじりの後、私は代わりにこれをした:ViewBag.Fooがnullとnullでない場合は、この変更に伴い
double[] bar;
@{
if (ViewBag.Foo != null)
{
bar = new double[ViewBag.Foo.Length];
}
}
else
{
bar = new double[1];
}
を、コードが動作します。これを処理するにはより良い方法が必要です...誰ですか?
あなたのケースでは、ViewBag.Fooは実際には存在しません(動的なタイプなので、コードはうまく動作します)。ViewBag.Fooは存在しますか?もしそうでなければ、読んでください:http://stackoverflow.com/questions/2634858/how-do-i-reflect-over-the-members-of-dynamic-object – Polity
私が言っているのは...これは正確に理由です。最初に動的言語を避けると仮定します。明確なモデルでカスタムビューを作成することを検討しましたか? –