[seasar-dotnet:904] [S2Container.NET] ASP.NET での Web フォームに対する DI

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 7月 30日 (水) 01:42:34 JST


はじめまして。ももたろと申します。

ASP.NETからS2Dao.NETが使いたくて、まずはS2Container.NETをASP.NETで
使用できるように環境を整えています。

今回の目的としては、WebフォームにsingletonなビジネスロジッククラスをDIして
呼び出したいと考えています。
(そもそも、こんなことしないよ、とかあれば指摘してくださると嬉しいです)

それを実現するためにWebフォームをコンポーネント登録しようとした場合、
以下の点ではまってしまいましたので要望&相談させてください。

(1) Webフォームをコンポーネント登録する際に仮想パスを書かないといけない。
アプリケーションルートからのパスを書けばよいものと思い、

  <component name="/Default.aspx" instance="outer" />

と書いていてずっと悩んでいました。
ドキュメントに「仮想パス」と明記してあるのに気付かなかった
私が悪いのですが、変更する可能性のあるアプリケーションルートまで
記述しないといけないのは、不便に感じました。
「~/Default.aspx」などのルート演算子が使えるとうれしいと思います。


(2) 大文字小文字を区別する。

  <component name="/WebSite1/Default.aspx" instance="outer" />

と仮想パスを記述することで、意図するように動作したのですが、
例えば、http://localhost/WebSite1/default.aspx などのように、
大文字小文字が違っているURLでアクセスするとDIしてくれなく
なってしまいました。

ユーザからは大文字でアクセスされるか小文字でアクセスされるかは
分からないため、大文字小文字は無視されていて欲しいです。

(3) Server.TransferするとDIされない。

  Server.Transfer("~/Default.aspx")

などとしてTransferした場合、Default.aspxにDIしてくれません。
改めてS2HttpModuleを通らないので、このようになってしまうとは
思うのですが、何らかの方法で改善されると嬉しいです。
とりあえず、代わりにRedirectを使用することで回避しようと
思っています。

(4) Webフォームを自動登録するよい方法は?
画面数が増えた場合に、やはりWebフォームもAutoRegister等で自動登録
したいです。どのようなアプローチが考えられるでしょうか?

以上です。
つらつらと書いてしまいましたが、よろしくお願いします。


seasar-dotnet メーリングリストの案内