[HiddenInput] 属性の挙動が直観と反していた。
- [HiddenInput] または [HiddenInput(DisplayValue=true)] は、read-only の値として扱われる。すなわち変数名と変数の値を表示し、HTML的には input type=”hidden” が出力される。
- [HiddenInput(DisplayValue=false)] は、何も表示しない。input type=”hidden” 要素すら出力されない。
後者は、System.ComponentModel.DataAnnotations.Display を利用し [Display(AutoGenerateField = false)] を指定した時と同じ挙動であり、「ユーザーに直接見せたくない」という意図を表現するには、Webに依存しない [Display] 属性を利用する方が好ましい。
Webにおいて 単純に input type=”hidden” 要素を出したいという状況に対する回答として、[UIHint(“Hidden”)] を指定し、それに対応する ascx ファイルを作成する方法がある。
http://stackoverflow.com/questions/3924780/asp-net-mvc-modedmetadata-question-for-hiddeninput
しかし、HiddenInput がこのような挙動になっているのには、多分理由があるのだろう。
ASP.NET MVC3 のモデルに対する HiddenInput 属性の挙動 « Mimori’s Algorithms Press…
素敵なエントリーの登録ありがとうございます – .NET Clipsからのトラックバック…