我需要在每个页面加载之前点击DB并加载设置文件。我目前正在使用MVC并在所有控制器中的构造函数中创建该调用。
我不确定处理这种情况的更好方法是什么?我读到就像在这种情况下我们可以使用单例类。
是否可以将数据包含一次并在页面中重复使用?什么是最好的方式?
一些示例代码段会有所帮助!
答案 0 :(得分:0)
选项一:您可以在Application_BeginRequest
中使用Global.asax.cs
:
protected void Application_BeginRequest(object sender, System.EventArgs e)
{
//something
}
选项二:创建全局过滤器:
public class ActionLogFilter : IActionFilter
{
public void OnActionExecuting(ActionExecutingContext filterContext)
{
// do your stuff. This is run before control is passed to controller
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
// do stuff here - control here is passed after controller is done with the action execution
}
}
然后将控制器添加到Global.asax.cs
中的执行堆栈:
FilterConfig.RegisterGlobalFilters(GlobalFilterCollection filters)
和FilterConfig通常如下所示:
public static class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new MyFilter());
}
}
选项三:创建覆盖OnActionExecuting
的全局控制器(请参阅过滤器示例)。使控制器继承该全局基本控制器。
我更喜欢选择过滤器。 Favour composition over inheritance