すべてのページで使用したいリポジトリがあります。C#MVC 5継承するカスタムコントローラクラス
デフォルトでは、すべてのMVCコントローラはController
クラスを継承します。私はRepository
のフィールドを定義したCustomBaseController
クラスを作成し、CustomBaseController
コンストラクタのコンテキストでインスタンス化しました。
これまで、新しいコントローラを作成したいときなど。 HomeController
はCustomBaseController
から継承されていますが、私のリポジトリフィールド(db)は表示されません。ここで
は私の新しいCustomBaseController
からの例です:私のHomeController
からも
public class CustomBaseController : Controller {
private IRepository db; // <-- defined
public CustomController() {
// here it is initialized
db = new DbRepository(new ApplicationDBContext());
}
}
そして:
public class ProgramController : CustomBaseController
{
// GET: Program
public ActionResult Index()
{
// db is not accessible here for some reason,
// like it wasn't inherited from CustomBaseController
var user = db.getUserByID(1);
return List(user);
}
...
それで保護してください。 –