読者です 読者をやめる 読者になる 読者になる

プログラマーな日々

プログラマー兼SEです。好きなツール:WorkFlowy、好きな言語:C#、好きなAWSのサービス:EMR。

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

ASP.NET トラブルシュート

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

どういうこと?

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

どうして?

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

どうすれば?

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