- 締切済み
【ASP.NET MVC】HTMLヘルパーについて
ASP.NET MVCで開発しています。 型付けHTMLヘルパーが上手く理解(というか納得?)できないので どうかご教授願います。 ところで、事前にこちらのページを覗いております。 http://www.atmarkit.co.jp/fdotnet/scottgublog/20100113stronghelper/stronghelper.html さて、本題。 <%= Html.TextBoxFor(model => model.ProductName) %> というのが、 <input type="text" id="ProductName" name="ProductName" value="*model.ProductNameの値*"/> となるのは何となく理解ができます。 理解できるということの根拠として、id(およびname)の「ProductName」はまさに 記述されていますし、ラムダ式はmodel.ProductNameを返すようになっているから、 「.NETはnameとidとvalueを取得できるんだろうよ」、と予想できるからです。 旧来のHtmlヘルパー <%= Html.Textbox("ProductName",Model.ProductName) %> に比べて、 「name(id)属性用のパラメータが必要無い」 「テンプレート内でのコードインテリセンスが効く」 という利点があるそうですが、どうしてもここで納得出来ないことがあります。 この2点の利点を実現するのに、なぜラムダ式で実現できるのでしょうか? あるいは、なぜラムダ式が採用されたのでしょうか? 別の言い方をすれば、別にラムダ式を用いなくても、.NETが賢くなれば、 <%= Html.Textbox(Model.ProductName) %> という記述で、インテリセンスが効いてコンパイルチェックも実行されても おかしく無いと思うのですが・・・。 Modelオブジェクトの型宣言はテンプレートの先頭で行われているはずですから、 「Model.」と打ったところでModelのクラスと関連付いてもおかしく無いですよね? 別にMSの仕様に文句をつけるつもりはないのですが、 「先述の2点の利点を実現する」ことと、「ラムダ式の記述」というのがどうも一致しません。 開発作業には支障ないのですが、腑に落ちなくて困っています。 ソースコードを読んでも、自分の疑問の解決には至りませんでした。 どうぞよろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- onos
- ベストアンサー率81% (127/155)
お礼
onos様 ご回答いただきありがとうございます。 ソースコードは一通り読みました。その上で、「○○For」のHTMLヘルパーを使うことの 利点、どんなときにどんな風に使うことで、旧来HTMLヘルパーでは到底なし得なかったことが 実現できるのか?という部分がわからず、質問させていただいた次第です。