私はベースコントローラを読んできましたが、私はそのコンセプトを理解できないようです。私は何もコードを繰り返さないので、コントローラのコードを単純化する必要があります。データベースを使用してWebサイトのデータを収集し、ビューで使用するいくつかのリストを作成します。すべてのページは、ベースコントローラーでコピーした2つのリストを共有します。私がpagescontrollerのリストを削除すると、現在のコンテキストに「スライダ」と「パーテナイア」という名前が存在しないというエラーが表示されます。繰り返しコードを防止する最善の方法は何でしょうか?ベースコントローラまたは共有リソースにアクセスするためのメソッド
これは私のベースのコントローラです:
public class BaseController : Controller
{
PIAEntities db = new PIAEntities();
public BaseController()
{
var sliders = db.Actualite.Where(a => a.Afficher).OrderByDescending(a => a.Date_publication);
var partenaires = db.Partenaire.Where(p => p.Afficher);
}
}
そして、これはすべての私のページ
public class PagesController : BaseController
{
public PagesController() : base()
{
}
PIAEntities db = new PIAEntities();
public ActionResult Activités()
{
var sliders = db.Actualite.Where(a => a.Afficher).OrderByDescending(a => a.Date_publication);
var partenaires = db.Partenaire.Where(p => p.Afficher);
var model = new ModelDeBase { Slider = sliders, Partenaire = partenaires };
return View(model);
}
public ActionResult Actualités()
{
var sliders = db.Actualite.Where(a => a.Afficher).OrderByDescending(a => a.Date_publication);
var pageActualites = db.Actualite.OrderByDescending(a => a.Date_publication).Take(10);
var donateurs = db.Donateur.Where(d => d.Afficher);
var partenaires = db.Partenaire.Where(p => p.Afficher);
var model = new ModelActualite { Slider = sliders, Partenaire = partenaires, PageActualite = pageActualites, Donateur = donateurs };
return View(model);
}
}
ソリューションを管理するコントローラの一部です:
[OK]を、今では動作し、私は私のベースコントローラでこれを使用して終了しました
public class BaseController : Controller
{
PIAEntities db = new PIAEntities();
protected IEnumerable<Actualite> sliders { get; private set; }
protected IEnumerable<Partenaire> partenaires { get; private set; }
public BaseController()
{
sliders = db.Actualite.Where(a => a.Afficher).OrderByDescending(a => a.Date_publication);
partenaires = db.Partenaire.Where(p => p.Afficher);
}
}
とページコントローラ:あなたの現在のコードで
public class PagesController : BaseController
{
public PagesController() : base()
{
}
PIAEntities db = new PIAEntities();
public ActionResult Activités()
{
var model = new ModelDeBase { Slider = sliders, Partenaire = partenaires };
return View(model);
}
public ActionResult Actualités()
{
var pageActualites = db.Actualite.OrderByDescending(a => a.Date_publication).Take(10);
var donateurs = db.Donateur.Where(d => d.Afficher);
var model = new ModelActualite { Slider = sliders, Partenaire = partenaires, PageActualite = pageActualites, Donateur = donateurs };
return View(model);
}
}
あなたは、C#での継承を検討する必要がありますhttps://msdn.microsoft.com/en-us/library/ms173149.aspx – blins