トップ回答者
モジュール間で関数参照を行うには?

質問
-
VisualStudio2010
.NetFramework4.0
aspシステムからのバージョンアップを行うため、ASP.Netの機能調査などを行っています。
サーバへの資産配布時に、従来の手法を予定していて、ASP.Net Webアプリケーションで開発した
プロジェクトをコンパイルなしで、原文のまま配布する方法を考えています。
ASPタグなどの画面作成は良かったのですが、データベース操作などの共通処理をまとめるため、
Class定義を利用しようとしましたが、原文のままサーバ配置しているためか、インスタンス生成(new)
の部分が動作しません。そこで、モジュール(Module)での共通関数定義を使用する事を考え、コードビハインドファイルからは
Assemblyディレクティブを指定する事で、関数参照を行うことができましたが、そのModuleから更に
別のModuleを呼び出す方法が分かりません。例えば、[Module-A]をコントローラとして、[Module-B]にDB接続・値チェックなどの関数を作成している
場合、[Module-A]内のFunctionから[Module-B]内のFunctionを呼び出すようなかんじです。
パスが通っていないためというのは認識できていますが、どのような記述をすれば実現できるのでしょうか?
(ModuleおよびFunctionなどは全てPublic指定としています。)
回答
-
用語の使い方が違うような気がしますが・・・
「原文」と言うのはソースファイルのこと、「モジュール」と言うのは
アプリケーションで共通に使うクラスを定義したクラスファイル(C# ま
たは VB.NET でクラスを定義したソースを格納した .cs または .vb フ
ァイル)のことで、Web サイトプロジェクトで ASP.NET の(MVC ではな
い)アプリを作っているのですよね?であれば、kazuk さんが言われるように、クラスファイルはすべて App_Code
フォルダに配置する必要があります。> 原文のままサーバ配置しているためか、インスタンス生成(new) の部
> 分が動作しません。とのことですが、そんなことはなくて、サーバー上で App_Code フォルダ
に配置したソースその他すべてのファイルは、最初にクライアントから要
求があった時点で自動的にコンパイルされます。> そこで、モジュール(Module)での共通関数定義を使用する事を考え、コ
> ードビハインドファイルからは Assemblyディレクティブを指定する事で、
> 関数参照を行うことができましたが意味が分かりませんが、App_Code フォルダに配置したクラスは、なにも特別
なことをしなくても、ページから参照できるはずです。ただし、App_Code のクラスからページまたはユーザーコントロールクラスを
参照することはできませんので注意してください。- 回答としてマーク 山本春海 2011年8月18日 1:04
-
kazukさん、SurferOnWwwさん、返信ありがとうございました。
教えて頂きました情報を元に、いろいろ試してみた結果、やりたかった事が実現できました。
VB.NETでの経験はありますが、ASP.NETでの開発は初めてで、
意味不明な質問をしてしまった部分もあり、申し訳ありませんでした。今回やりたかった事としては、事前ビルドを行わないまま、配布処理を行いたかったので、
原文のままサーバ配置といった記述をしていました。結果的には、App_Codeフォルダに配置したクラスを参照する事ができました。
教えて頂く前は、App_Codeと異なるフォルダに配置していたため、Class参照ができず、
Moduleで作成する方法などを試していました。また、IISの設定変更なども行っていなかったため、ASP.NETモジュールのインストール、
Webアプリケーションの登録などを行う事で、実現できました。ありがとうございました。
- 回答としてマーク IT246 2011年8月17日 8:36
すべての返信
-
用語の使い方が違うような気がしますが・・・
「原文」と言うのはソースファイルのこと、「モジュール」と言うのは
アプリケーションで共通に使うクラスを定義したクラスファイル(C# ま
たは VB.NET でクラスを定義したソースを格納した .cs または .vb フ
ァイル)のことで、Web サイトプロジェクトで ASP.NET の(MVC ではな
い)アプリを作っているのですよね?であれば、kazuk さんが言われるように、クラスファイルはすべて App_Code
フォルダに配置する必要があります。> 原文のままサーバ配置しているためか、インスタンス生成(new) の部
> 分が動作しません。とのことですが、そんなことはなくて、サーバー上で App_Code フォルダ
に配置したソースその他すべてのファイルは、最初にクライアントから要
求があった時点で自動的にコンパイルされます。> そこで、モジュール(Module)での共通関数定義を使用する事を考え、コ
> ードビハインドファイルからは Assemblyディレクティブを指定する事で、
> 関数参照を行うことができましたが意味が分かりませんが、App_Code フォルダに配置したクラスは、なにも特別
なことをしなくても、ページから参照できるはずです。ただし、App_Code のクラスからページまたはユーザーコントロールクラスを
参照することはできませんので注意してください。- 回答としてマーク 山本春海 2011年8月18日 1:04
-
kazukさん、SurferOnWwwさん、返信ありがとうございました。
教えて頂きました情報を元に、いろいろ試してみた結果、やりたかった事が実現できました。
VB.NETでの経験はありますが、ASP.NETでの開発は初めてで、
意味不明な質問をしてしまった部分もあり、申し訳ありませんでした。今回やりたかった事としては、事前ビルドを行わないまま、配布処理を行いたかったので、
原文のままサーバ配置といった記述をしていました。結果的には、App_Codeフォルダに配置したクラスを参照する事ができました。
教えて頂く前は、App_Codeと異なるフォルダに配置していたため、Class参照ができず、
Moduleで作成する方法などを試していました。また、IISの設定変更なども行っていなかったため、ASP.NETモジュールのインストール、
Webアプリケーションの登録などを行う事で、実現できました。ありがとうございました。
- 回答としてマーク IT246 2011年8月17日 8:36