- PR -

ASP.NETで、各ページに共通の処理を入れるには?

1
投稿者投稿内容
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2003-02-14 22:43
VisualBasic.NetでASP.NETの開発をしています。

各ページで、共通の処理→ページ毎の処理としたいため、下記のようなコードを記述しました。

BasePage.vb
コード:
Public MustInherit Class BasePage : Inherits System.Web.UI.Page
 Protected Sub BasePage_Load(ByVal sender As System.Object,_
                             ByVal e As System.EventArgs) Handles MyBase.Load
  '共通の処理
  ......
  MustOverrideMethod()
 End Sub
	
 Protected MustOverride Sub MustOverrideMethod()
End Class



TestForm.aspx.vb
コード:
Public Class TestForm : Inherits BasePage
 Protected Overrides Sub MustOverrideMethod()
 'ページ毎の処理
 ......
 End Sub
End Class



上記のようにしたところ、処理自体は思惑通り動作するのですが、TestForm.aspxをデザイナで読み込もうとすると以下のようなエラーが発生するようになりました。
「Web フォーム デザイナにファイルを読み込めませんでした。以下のエラーを修正してから再度読み込んでください:Abstract型」

このエラーの対処法が分からずに困ってます。
そもそも「共通の処理→ページ毎の処理」を実現する方法として根本的に誤っているのでしょうか?
どなたかご教示お願いいたします。
べーちゃん
大ベテラン
会議室デビュー日: 2002/07/21
投稿数: 121
投稿日時: 2003-02-15 02:32
はじめまして、私も同様の方法を用いていますので、機能的には問題が
ないと思います。またHeさんと同じエラーも出たことがあります。
ただ、そのエラーが出たのはかなり以前のことで、正直原因は忘れて
しまいました。
以下の点を確認して見られることをお勧めします。
1.ASPXファイルの最初の行のコードビハインドファイル名と継承
 ファイル名がちゃんと正しいかを確認する。
2.ファイル名を変えるなどしてバックアップをとっておき再度、同じ
 ファイルを生成してみる。
3.BasePageのMustInheritedをはずしてMustOverride指定をOverridableに
 してみる。
のいずれかで解決したような気がします。



[ メッセージ編集済み 編集者: べーちゃん 編集日時 2003-02-15 02:35 ]
He
大ベテラン
会議室デビュー日: 2002/12/18
投稿数: 141
投稿日時: 2003-02-15 13:53
べーちゃん様

回答ありがとうございます。
早速確認してみましたのでご報告いたします。

1.コードビハインドファイル名と継承ファイル名が正しいか
  →正しい
2.再度、同じファイルを生成
  →同様のエラーが発生する
3.MustOverride指定をOverridableに
  →エラーは発生しなくなった

と、いうわけでMustOverrideをOverridableにすることでaspxファイルをデザイナで読み込むことができるようになりました。
ただこの方法の問題は、
必ず実装すべきメンバと、必要に応じて実装するメンバの区別がつけられないということです。
#区別をするためにMustOverrideとOverridableがあるんだから当然なんですが。。。

デザイナを使った作業か、上記の区別をつけられるようにするかのトレードオフになってしまうのでしょうか。
1

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