谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

もうちょっと、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ライク)
が良いのではないでしょうか。