記事詳細
- 投稿日
- 2026年08月21日19時50分
-
タイトル
-
ASP.NET Core MVC: <table class="table>内の@Html.DisplayFor(modelItem => item.IncomeCategoryNavigation.CategoryName)の値がNullである時、<th> @Html.DisplayNameFor(model => model.IncomeCategoryNavigation)</th>の表示をしないようにするコードを教えてください。
- 内容
-
ASP.NET Core MVC の
@Html.DisplayNameFor(...)は、モデルのメタデータから列名(表示名)を取得するだけなので、item.IncomeCategoryNavigation.CategoryNameがnullかどうかは直接関係ありません。
そのため、「値が null のときは<th>を出さない」には、Razor 側で条件分岐を入れる必要があります。実装例
もし
ModelがIEnumerable<YourModel>のようなコレクションで、
テーブルのヘッダー行を作る場合は、次のように書けます。ポイント
- **
?.(null 条件演算子)**でIncomeCategoryNavigationがnullの場合も安全にアクセス。 Model.Any(...)で、1件でも値がある場合のみ<th>を出力。model.First()を使ってDisplayNameForに型情報を渡す(DisplayNameForはコレクション全体ではなく要素型のプロパティ名を使うため)。
✅ この方法なら、
- 全データで
CategoryNameがnull→<th>非表示 - 1件でも値あり →
<th>表示
が実現できます。
もし「行ごとに
<th>を消す」のではなく「列ごとに完全に非表示」にしたい場合は、この方法が最適です。必要であれば、このコードを 部分ビュー化して再利用可能なヘッダー生成ロジック にすることもできますが、
そのサンプルも作りますか?
そうすれば複数のテーブルで同じ条件付きヘッダーを使えます。Powered by Froala Editor
- **
-
添付画像
-
画像はありません
- Genreのカテゴリ-名
- Views