- PR -

ASPXファイルをDLLに含めてコンパイル

1
投稿者投稿内容
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2005-11-17 16:46
いつもお世話になっております。

現在、ASP.NETでのアプリケーションの基盤(俗に言う俺様フレームワークです )を開発しています。
開発環境
OS :Win2000Pro
AS :IIS5.0
FWK :.NET Framework2.0 beta2
言語:C#

現在、下記の内容が実現可能なのかという点で悩んでおります。
実現したい内容として・・・
共通的な画面(ASPXファイル)をDLLに含め、DLLの中のクラスから新規ウィンドウとして、その画面を呼び出す機能を実現したいです。


--<補足:実現したい機能は下記のような内容です>--
「帳票を印刷するクラス」を1つ作成し、業務の画面(DLL外のASPXファイル)はこのクラスに帳票のIDを送るだけで自動的に別ウィンドウが立ち上がり、IDに紐付いた帳票のプレビュー画面を表示する機能を実現したいのです。(IDと帳票の紐付けする部分は既に作成済みです。)
ある程度、汎用的に使いまわすことを考えると、「帳票を印刷するクラス」と「プレビュー画面」は常にセットになるようにしておくべきだと考えています。
その為には、同じDLL内に含めて扱うのが一番良いのではないかと思っています。
------------------------------------------------

何かヒントとなる情報をご存知の方が居られましたら、ご教授願えないでしょうか。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2005-11-17 17:44
こんにちは。

かなり頑張れば出来なくもなさそうですが・・・。
aspx 等は実行時にソースファイルができ、それを実行時にコンパイルします(初回リクエストのみ)
なので、ソースがないので DLL に含める事ができないですね。
コードビハインド側のソースは共通で使えます。

引用:

共通的な画面(ASPXファイル)をDLLに含め、DLLの中のクラスから新規ウィンドウとして、その画面を呼び出す機能を実現したいです。


それだったら、普通にそこに画面遷移したらいいような気が・・・。パラメータを GET や POST 等にして。

# ASP.NET 2 は aspx とコードビハインドの関係が変更されていますが、実行時云々の概念は同じです。
_________________
囚人のジレンマな日々
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2005-11-17 18:10
囚人さん、ありがとうございます。

引用:

aspx 等は実行時にソースファイルができ、それを実行時にコンパイルします(初回リクエストのみ)
なので、ソースがないので DLL に含める事ができないですね。
コードビハインド側のソースは共通で使えます。



そうですね。自分も中間ソースを眺めて何か解決策のヒントがないか??と考えたのですが、良い解決策を見つけられませんでした。

とりあえず、今の段階で2つの方向から考えています。
案1)
ASPXファイルのビルドアクションを「コンパイル」にし、実行時にコンパイルされたクラスを表示する。
案2)
ASPXファイルのビルドアクションを「埋め込まれたリソース」にし、実行時にDLL内のリソースを表示する。

引用:

それだったら、普通にそこに画面遷移したらいいような気が・・・。パラメータを GET や POST 等にして。



その通りなのですが・・・
いろいろなアプリケーションでそのDLLを共通部品として使用したい場合、「ASPXファイルの存在、ASPXファイルの配置場所」をDLL使用者が保証してあげる必要があります。一つの塊にしてしまえば、「ASPXファイルの存在、ASPXファイルの配置場所」の保証はDLL内だけの問題になるので、共通部品としての完成度が格段に良くなると思ったのです。
「DLL使用者は、開発環境を作成する際にDLLのみを意識すればよい。」としたいのです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-11-17 18:27
画面レベルの話だったら、ユーザーコントロールではダメなのでしょうか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2005-11-17 18:43
じゃんぬねっとさん、ありがとうございます。

いまいち、ユーザーコントロールで実現するイメージが出来ないのですが・・・
よろしければもう少し詳しくお聞かせ願えないでしょうか?

自分のイメージですとユーザコントロールの場合、下記の2の部分のみしか共通化できないです・・・。
1.新しいウィンドウを開く
2.新しいウィンドウに帳票のプレビューを表示する

ユーザーコントロールを使用することでDLL使用者が、「どのASPXファイルに」プレビューを表示するかを意識させないようにする事は可能なのでしょうか?

宜しくお願いいたします。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-11-17 18:51
HttpHandlerをうまく使えばなんとかなるかなぁ。
aspxとして作成したものをソースに落とせる、というのが前提になるでしょうけど。
デバッグモードでよければ生成されるソースを取り出すことはできますけど、それがHttpHandlerに組み込んで使えるかどうかは試したことないからなぁ。

あと、

> 業務の画面(DLL外のASPXファイル)はこのクラスに帳票のIDを送るだけで自動的に別ウィンドウが立ち上がり、

クラスに帳票ID送るだけで自動的に別のウィンドウが立ち上がり、というのは無理でしょうね。
別のウィンドウを起動しておいて、そこに表示する内容として帳票IDを送る、という形にするしかないのでは?
Webで別のウィンドウを起動するのはクライアント側の作業ですからねぇ。。。
Hodgkin
常連さん
会議室デビュー日: 2003/07/18
投稿数: 34
投稿日時: 2005-11-17 19:03
どっとねっとふぁんさん、ありがとうございます。

HttpHandlerですね。その辺りを少し勉強してみます。

引用:

クラスに帳票ID送るだけで自動的に別のウィンドウが立ち上がり、というのは無理でしょうね。
別のウィンドウを起動しておいて、そこに表示する内容として帳票IDを送る、という形にするしかないのでは?
Webで別のウィンドウを起動するのはクライアント側の作業ですからねぇ。。。



すみません。情報が不足していました。
正確には、帳票ID、パラメータ(印刷条件)とPageインスタンスですね。で、Pageインスタンスに対して新しいウィンドウを表示するJavaScriptを設定します。これで実現しようと思います。

HttpHandlerのヒントで少し、光が差してきました。ありがとうございます。

#ダメなら、クラスに帳票IDが来た時点で、
#サイトのカレントディレクトリにViewer.aspxとViewer.aspx.csファイルを
#ファイル出力しようかとも考えていました。
#かっこ悪いプログラムになりますが・・・
1

スキルアップ/キャリアアップ(JOB@IT)