none
複数ページで共有したいクラス RRS feed

  • 質問

  • 始めましてくりーむと申します

    現在、テキストエディタにて開発を行っている為、
    VWDを扱うここのスレッドの内容にはふさわしくないとは思いましたが
    asp.netでの技術的質問ということで投稿させていただきます。


    今二つのweb画面を作成しており
    どちらからも呼ばれるクラスファイルを作成したいのですがその作成と組み込み手段がよくわからずに困っております。


    今、
    counter1.aspx (及び counter1.aspx.vb)
    counter2.aspx (及び counter2.aspx.vb)
    の二つ画面(コードビハインドなので4ファイル)があります。

    また
    counter1.aspx.vb 内のPublic Classには Counter1
    counter2.aspx.vb 内のPublic Classには Counter2
    のみが存在しています

    そのため
    counter1.aspx の Pageディレクティブには <%@ Page ・・省略・・ Inherits="Counter1" Src="./counter1.aspx.vb"%>
    counter2.aspx の Pageディレクティブには <%@ Page ・・省略・・ Inherits="Counter2" Src="./counter2.aspx.vb"%>
    と記述しております。


    そこで上記の.aspx.vb上で「重複するような処理」があったため、その部分を切り出して

    counter_common.aspx.vb (Public Class CounterCommon)

    という共通処理部分のクラスを作ってはみましたが、この共通クラスを利用するためには
    どのようにPageディレクティブに記述すればよいかが分からずに困っております。

    勝手な質問ではありますが、どなたかご教示お願い致しますm(__)m

    2006年7月21日 7:13

回答

  • どのような重複する処理ですか?

    処理によりますが、コードビハインド側のコードにインスタンスメンバとして持つだけでもいいですし、メソッド内で呼び出して利用するだけでもいいでしょう。

    少なくとも@Pageディレクティブにはあまり影響しません。

    2006年7月21日 14:52
  • 実行時の動的コンパイルを利用しているので、別ソースを参照できない。
     
    ということかな?
     
    であれば、
    <% @ Page ... Inherits="Counter1" Src="./counter1.aspx.vb"%>
    <% @ Assembly Src="counter_common.vb"%>
    でよいと思います。
    これで、counter_common.dll という動的アセンブリが生成されて、ページのコンパイル時に参照設定されます。
    #個別アセンブリになるので VB と C# を混在させるなども可能です
     
    2006年7月21日 16:28
  • 共通処理のクラスですけど、どこに作ったのでしょうか?
    ASP.NET 2.0ではページから呼び出すクラスはApp_Codeフォルダの下に作成する必要があります。
    逆に、この場所に作成しておけば、自動的にコンパイルしてくれますし、普通にコードビハインドの中から利用することができます。

    無料で利用できるものなので、まずVWDをインストールして試してみるとこういった仕組みとかの部分で苦労しなくていいと思います。
    エディタで頑張るのは慣れてからじゃないときついと思う。

    2006年7月22日 2:50

すべての返信

  • どのような重複する処理ですか?

    処理によりますが、コードビハインド側のコードにインスタンスメンバとして持つだけでもいいですし、メソッド内で呼び出して利用するだけでもいいでしょう。

    少なくとも@Pageディレクティブにはあまり影響しません。

    2006年7月21日 14:52
  • 実行時の動的コンパイルを利用しているので、別ソースを参照できない。
     
    ということかな?
     
    であれば、
    <% @ Page ... Inherits="Counter1" Src="./counter1.aspx.vb"%>
    <% @ Assembly Src="counter_common.vb"%>
    でよいと思います。
    これで、counter_common.dll という動的アセンブリが生成されて、ページのコンパイル時に参照設定されます。
    #個別アセンブリになるので VB と C# を混在させるなども可能です
     
    2006年7月21日 16:28
  • 共通処理のクラスですけど、どこに作ったのでしょうか?
    ASP.NET 2.0ではページから呼び出すクラスはApp_Codeフォルダの下に作成する必要があります。
    逆に、この場所に作成しておけば、自動的にコンパイルしてくれますし、普通にコードビハインドの中から利用することができます。

    無料で利用できるものなので、まずVWDをインストールして試してみるとこういった仕組みとかの部分で苦労しなくていいと思います。
    エディタで頑張るのは慣れてからじゃないときついと思う。

    2006年7月22日 2:50
  • 返事が送れてしまいました申し訳ありません

    >中博俊さん
    私が当初行っていた事は、ページアクセスカウンタ処理を各ページ毎に記述しておりました。
    (なんでページ毎にアクセスとってるの?とかいわないで。。クダサイ。。)

    これを
    ページがアクセスされる度に「ページID」なる値を渡して
    「受け取ったページIDのレコード(DBはMS Access2000です)をカウントアップさせる機能」
    の部分を共通化させたかった次第です
    伝えたい事の表現が不十分であり、申し訳ありませんm(__)m


    >Lady.BUGさん
    ありがとうございます。
    asp.netが動作する知識ももたずままテキストエディタで開発していた事をまず反省します
    <% @ Assembly Src="counter_common.vb"%>
    たしかにこれで動作が通りました
    ありがとうございます


    >どっとねっとふぁん さん
    お恥ずかしい話ですが、共通処理の「counter_common.vb」の扱い方が全くわからなかったので
    ページのソースがある部分と同じフォルダに設置したり、
    アプリケーションのルートフォルダに設置してみたりしておりました。(※もちろんただファイル転送で置いていただけです)
    そのApp_Codeフォルダの重要性もわからずに2.0に手を出していたのが実際のところです。

    どっとねっとふぁんさんがおっしゃってくれました様にこれからはVWDを使用して開発することに致します。

     

    皆様、本当に初歩的な質問ですが、お答えしていただいた事に感謝しております。

     

    2006年7月26日 5:51