[ASP.NET MVC] スキャフォールディングにおいて、項目を読み取り専用にするアノテーションまとめ

ASP.NET MVC のスキャフォールディングによって作成されるページにおいて、モデルのプロパティを読み取り専用としたい、またはページに表示したくない場合に指定するアノテーションをまとめました。

アノテーション指定方法 スキャフォールディングの結果
参照系ページ
(Index/Details/Delete)
編集系ページ
(Create/Edit)
[HiddenInput]
([HiddenInput(DisplayInput = true)] と同じ)
見出し、値とも表示される。 見出し、値とも表示される。
<input type=”hidden”>として出力される。
[HiddenInput(DisplayInput = false)] 見出しは表示されるが、値は表示されない 見出しは表示されるが、値は表示されない
<input type=”hidden”>として出力される。
[Editable(false)] 見出し、値とも表示される。 見出し、値とも表示されない。
[ReadOnly] 見出し、値とも表示される。 見出し、値とも表示されない。

HiddenInput はあくまで <input type=”hidden”> として出力されるというだけで、読み取り専用か否かといった点で語るものではないと思われます。しかし、DisplayInput プロパティの指定によって値の表示/非表示が変わるため、調査に含めてみました。

以下、動作確認に使用したモデル クラスと実行結果です。(HTML は長いので、一部抜粋しています。)

▼モデル クラス

▼実行結果: Index ページ

Indexページでは、HiddenInput(DisplayValue=false)以外は見出し、値とも表示される

▼実行結果: Details ページ

Details/Deleteページでは、HiddenInput(DisplayValue=false)以外は見出し、値とも表示される

▼実行結果: Edit ページ

[Editable(false)] または [ReadOnly] を付与したプロパティは表示されてないません。
Editable(false)とReadOnly(true)は、見出し、値とも表示されない

Delete ページは Details ページに似ているので、省略。同様に、Create ページは Edit ページに似ているので、省略しています。

「見出し、値とも表示はされないけれど、<input type=”hidden”> として出力される」指定が欲しかったけど、無いみたいですね。こういった場合は、スキャフォールディングで作成されたページに対して、手で修正を加えてやる必要があるようです。

KPDN

プログラミングとゲームが好きな、しがないにゃんこ好きです。わんこも同じぐらい好きです。最近、物忘れどんどんが酷くなってきた。

コメントを残す