プログラマーな日々

I'm a Cloud Architect and Developer, and a trainee of the network engineer training course. I have certified by AWS and Cisco (SAA/SOA/DVA/CCNA). I especially have highly motivated to reduce toils.

ビハインドコードのメソッドは、protectedにしないとaspxからは参照できない

ビハインドコードのメソッドは、protectedにしないとaspxのサーバーサイドロジックからは参照できません。

どういうこと?

  1. ビハインドコードにメソッドを作成し、アクセス修飾子をprivateまたはinternalにします。
  2. aspxの<%# 〜 %>に作成したメソッドを参照するコードを記述します。
  3. 実行すると、"CS0103: 名前 'HogeMethod' は現在のコンテキスト内に存在しません。"の例外が発生します。

どうして?

aspxのクラスはビハインドコードのクラスを継承しています。Hoge.aspxだとすると、継承関係は以下のようになります。
Hoge.aspx → Hoge.aspx.cs → System.Web.UI.Pageクラス

どうすれば?

アクセス修飾子をprotectedにします。publicでも参照できますが、スコープはできるだけ限定します。