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를 만들 수 있다.
'ASP.NET MVC' 카테고리의 다른 글
ASP.NET MVC] View Model (0) | 2022.07.11 |
---|---|
ASP.NET MVC] ActionResult, Custom ActionResult (0) | 2022.07.11 |
ASP.NET MVC] Sub Select Option 동적 변경 (0) | 2022.05.27 |
ASP.NET MVC] Response.ContentType을 사용한 엑셀 다운로드 (1) | 2022.05.27 |
ASP.NET MVC] MVC에서 Vue .js 사용하기 (0) | 2022.01.07 |
댓글