家の中でのこだわりスペースはどこですか?

ASP.NETでの共通コードの書き方を教えてください。

いつもお世話になっております。

最近、microsoft Accessで作成したシステムを、Visual Wev Developer 2008を利用して、asp.netに移行しようとしております。
そこで質問なのですが、VBAなどでは、各フォームで共通利用するグローバル関数(Function)をモジュールオブジェクトに作成できましたが、ASP .NETでは、各ページで共通利用する関数をどこに記載したらいいのでしょうか。(たとえば、共通の計算式など)

初歩的なことかもしれませんが、具体的な手順をご指導いただければ大変助かります。

よろしくお願いいたいします。

A 回答 (2件)

Web サイトで構築の前提で。

。。
ソリューションエクスプローラで、プロジェクトを右クリックし、「ASP.NET フォルダの追加」メニューから「App_Code」フォルダを追加します。
このフォルダの中に、クラスファイルを追加します。クラスファイルの中では

Shared Sub New()
End Sub

と記載すると、共通利用できるようになります。グローバル関数は、

Public Shared Function XXXX() As String
End Sub

といった感じで記載します。

Web 開発に慣れておられるのであれば蛇足ですが、
このファイルにグローバル変数を定義して、複数ページから書き換えるような事をすると、複数ユーザ間でデータを共有してしまい滅茶苦茶な事になりますから、その辺り注意してください。
    • good
    • 1
この回答へのお礼

丁寧なご説明ありがとうございました。

私は、Webシステム開発初心者のため大変助かりました。

お礼日時:2010/09/15 11:15

Windows FormやConsole Applicationでしたら、VBAと同じようにグルーバルモジュールが使えますが、ASP.NET Werb Formでは使えませんね。


ASP.NETで共有コードモジュールを作るには、
1.別プロジェクト(クラスライブラリ)にクラスを作って共用(VWDでは不可)
2.別クラスに作って共用
3.基底クラスを作り継承して共用
のいずれかです。
1と2はVBのころからある方法です(あんまりクラス使ってなかったけど)。
実戦的には、この3者の組み合わせになるでしょう。
いずれも、オブジェクトメンバ呼出しでも、静的メンバ呼出しとしても、どちらでもかまいません。

【C# Webサイトプロジェクトでの例】
プロジェクト->新規エレメント追加->クラスとやると、"App_Code"に入れるよう推奨されるのでOKする。
(App_Code内のクラスはWebサイトプロジェクトで、実行前に自動コンパイルされるため)

2の例

public class Hoge
{
 public void moge() {
  // インスタンスメソッド
 }
 public static void smoge() {
  // クラスメソッド
 }
}

で、ASP.NET WebForm側から、
var hoge = new Hoge(); // インスタンス生成
hoge.moge(); // インスタンスメソッド呼出
Hoge.smoge(); // クラスメソッド呼出

3の例
Web Formの基底クラスである、System.Web.UI.Pageを継承するクラスを作り、各画面にそれを継承させる。

public class BaseForm : System.Web.UI.Page
{
 protected void moge() {
 }
}

以降の*.aspx.csファイルはすべて、
public class test : BaseForm{}
CodeFileを使わない場合でも、*.aspxのPageディレクティブで、
<@# Page....以降略.... inherits="BaseForm" />

とすれば、this.moge()をあたかも自身のメソッドのように使えます。
    • good
    • 0
この回答へのお礼

丁寧なご説明ありがとうございました。

私は、Webシステム開発初心者のため大変助かりました。

少し難しそうですが、これからやってみたいと思います。

お礼日時:2010/09/15 11:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報