본문 바로가기
ASP.NET MVC

ASP.NET MVC] Controller, Actions, IController, ControllerBase

by Fastlane 2022. 7. 11.
728x90
반응형

Controller 설명

controller는 ASP.NET MVC의 core component이며, model의 data를 view로 옮겨주는 접착제 같은 역할을 한다. 

controller는 Controller Class를 상속받으며, action을 정의하는 public 함수를 포함한다.

 

하지만 controller가 꼭 Controller Class를 상속받아야 하는 것은 아니다. IController interface를 구현하는 것으로도 web request를 처리할 수 있다. 

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
    }

Controller actions

action method는 each server request의 main logic을 control한다. controller의 모든 함수가 action method가 될 수 있는 것은 아니다. action method가 되기 위해서는 아래의 조건을 충족해야 한다.

 

■ It must be public.

■ It can’t be static.

■ It can’t be an extension method.

■ It can’t be a constructor, getter, or setter.

■ It can’t have open generic types.

■ It can’t be a method of the Controller base class.

■ It can’t be a method of the ControllerBase base class.

■ It can’t contain ref or out parameters.

■ It can’t be decorated with the NonAction action selector.

IController Interface

IController Interface는 RequestContext object를 받는 Excute 함수만 정의한다. 

IController를 직접 구현하는 것으로 단순한 controller를 만들 수 있다. 

ControllerBase Class

ControllerBase Class는 IController를 직접 구현하고, ViewData,  ViewBag등이 포함되어 있다. 

하지만, action method는 포함되어 있지 않다. 

Controller Class

Controller Class는 ControllerBase Class를 상속받는다. 따라서 ViewData, ViewBag을 포함하며, 추가적인 기능들이 포함되어 있다. ControllerActionInvoker가 포함되어 있어, 

ControllerActionInvoker class를 override 하거나, IActionInvoker를 구현함으로 custom action invoker를 만들 수 있다. 

 

728x90
반응형

댓글