もうちょっと、Pageクラスについて。
Pageクラスについて考えてた時、ちょっと悩んだのがFormの扱い。
HTMLを、実直にPageクラスに置き換えて行くと
- 表示項目はPageクラスのプロパティ
- FormはPageクラスのプロパティ
- 入力項目はFormクラスのプロパティ
- ボタンなんかもFormクラスのプロパティ
になるわけじゃないですか。
(まぁLoop系の話はおいといて)
複数フォームがあるHTMLなんかも踏まえると、
Pageクラスってこんな構造になるんじゃないかなと。
でも、そもそもPageクラスを作ろうという時に
Form云々を考えちゃいけないなー、と思ったので
前回のエントリーではFormについてカットしました。
やはり、1Page1Formが前提でしょう。
ちょっと例を挙げて話しましょうか。
たとえば、
- 画面上に2つのフォームがある
- それぞれのフォームが入力項目を持っている
- ユーザが全ての入力項目に入力して、submitボタンを押した場合。
ここで、Pageクラスに、ユーザが「入力した全ての値」が反映されるかと言えば、No。
ユーザが「submitしたFormの値」だけしか反映されません。
そんな事を考えると、
やっぱり「Pageクラス」の考え方と「Form」って、いまいち合わない。
だったらいっそ、1Page1Formにしてしまえば良い。
(2007/08/16 画像を追加しました)
そして、こんな風に、Page内にフラットにコンポーネントを置いてやれば良い。
むしろ1Page1Formの方が、画面のコンポーネントやレイヤーを
動的に(JSやAjaxで)書き換えたりする事に対応しやすいでしょう。
なので、
Form云々について考えたい場合は、Actionメソッドの引数にFormを渡す(Strutsライク)
Formを考えず自由にやりたいなら、1Page1FormでPageクラス(ASP.NETライク)
が良いのではないでしょうか。