gpt4 book ai didi

c# - 访问共享资源的基础 Controller 或方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:09:21 25 4
gpt4 key购买 nike

我一直在阅读基本 Controller ,但我似乎无法理解这个概念。我需要简化 Controller 中的代码,因为我只是无意义地重复代码。我使用数据库为网站收集数据并构建一些列表以在 View 中使用。所有页面共享我在基本 Controller 中复制的两个列表。当我删除 pagescontroller 中的列表时,我收到一条错误消息,指出当前上下文中不存在名称“sliders”和“partenaires”。防止重复代码的最佳方法是什么?

这是我的基本 Controller :

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);
}
}

这是管理我所有页面的 Controller 的一部分

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);
}
}

解决方案:

好的,现在它可以工作了,我最终在我的基本 Controller 中使用了它

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);
}
}

和页面 Controller :

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);
}
}

最佳答案

你得到那个错误是因为现在你只是在构造函数的范围内声明对象。要修复,请在构造函数外部声明它们并在构造函数内部设置值(不确定我的类型是否正确,必须从您的示例中扣除它们)。

public class BaseController : Controller
{
PIAEntities db = new PIAEntities();
IQueryable<Actualite> sliders;
IQueryable<Paternaire> partenaires;

public BaseController()
{
sliders = db.Actualite.Where(a => a.Afficher).OrderByDescending(a => a.Date_publication);
partenaires = db.Partenaire.Where(p => p.Afficher);
}
}

关于c# - 访问共享资源的基础 Controller 或方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38723493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com