当前位置: 首页 > 知识库问答 >
问题:

基本控制器和特定控制器上的OnActionExecution

朱建弼
2023-03-14

我有一个BaseController,如下所示。

 public class BaseController : Controller
{
    
    public string BDynamicConnectionString { get; set; }
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        // Getting dynamic connectionstring
        this.BDynamicConnectionString = GetDynamicConnetionString(this.BCCompanyId, this.BCCompanyIdentifier);

    }
}

我在我的控制器中继承了这个基本控制器,如下所示。

public class TestController : BaseController
{
    private ClassroomBL objClassroomBL;

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        this.objClassroomBL = ClassObjects.ClassroomBLObject(BDynamicConnectionString);
    }

    public ActionResult FetchDefaultStatuses()
    {
        this.objClassroomBL.FetchDefaultStatuses(145);
        return View();
    }
}

可见,我在BaseController和TestController上都有OnActionExecutingContext(ActionExecutingContext filterContext)。实际上,我这样做的原因是我在基本控制器中管理许多从这个继承的每个控制器中需要的东西。

但现在我需要在特定控制器上执行类似于OnActionExecuting(ActionExecutingContext filterContext)的操作,因为我必须在调用action之前初始化对象,而我必须初始化的对象使用在BaseController中初始化的属性。

如果我在两者上都添加了OnActionExecuting(ActionExecutingContext filterContext),那么首先,在此事件上继承BaseController的控制器在BaseController之前激发。我知道这是因为OOPS的概念。

是在Basecontrollers OnActionExecuting之后但在特定控制器的操作执行之前激发的控制器上可以添加的任何其他内容。

谢谢

共有1个答案

阮华美
2023-03-14

只需在重写方法的第一行中使用以下内容:

base.OnActionExecuting(filterContext)

另请参阅base关键字。

 类似资料:
  • 控制器 控制器名称空间前缀统一为 “{$APPLICATION_DIR}Controller,即系统默认应用目录为App,那幺所有的控制器均应在/App/Controller目录下。 所有的控制器都应继承CoreAbstraceInterfaceAbstractController。 关于AbstractController中的抽象方法 easyswoole中,任何控制器都需继承AbstractC

  • 控制器定义 ThinkCMF5的控制器完全按 TP5的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController 继承关系 th

  • 控制器定义 ThinkCMF6.0的控制器完全按 TP6.0的控制器用法来,但 CMF 封装了几个重要控制器基类,为了更方便开发者,我们建议如果没有特殊需求,自己创建的控制器请最好继承一个基类控制器; 用于 WEB 项目的基类控制器有四个,分别是:BaseController,HomeBaseController,UserBaseController,AdminBaseController, Re

  • 控制器定义 控制器文件通常放在application/module/controller下面,类名和文件名保持大小写一致,并采用驼峰命名(首字母大写)。 一个典型的控制器类定义如下: <?php namespace app\index\controller; use think\Controller; class Index extends Controller { public fu

  • ThinkCMF Api有几个基类控制器,cmf\controller\RestBaseController,cmf\controller\RestUserBaseController,cmf\controller\RestAdminBaseController,基类增加一些统一的方法,和登录认证相关的基础操作。 api 基类控制器 RestBaseController RestBaseContr

  • 本文向大家介绍Ruby on Rails 基本REST控制器,包括了Ruby on Rails 基本REST控制器的使用技巧和注意事项,需要的朋友参考一下 示例