我一直在閱讀基礎控制器,我似乎無法理解這個概念。我需要簡化控制器中的代碼,因爲我只是重複代碼罷了。我使用數據庫爲網站收集數據並構建一些列表以在視圖中使用。所有頁面共享我在基本控制器中複製的兩個列表。當我刪除pagescontroller中的列表時,我得到一個錯誤,名稱'滑塊'和'partenaires'在當前上下文中不存在。什麼是防止重複代碼的最好方法?訪問共享資源的基礎控制器或方法
這是我的基本控制器:
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);
}
}
解決方案:
好了,現在它的工作原理和我結束了在我的基地控制器中使用這個
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