ASP.NET MVC Framework는 URL을 controller 클래스에 매핑합니다. Controller는 들어오는 요청을 처리하고, 사용자 입력과 상호작용을 다루며, 적당한 응용프로그램 로직을 수행합니다. Controller는 요청에 대한 HTML을 생성하기 위해 view 컴포넌트를 호출합니다.


모든 controller 클래스는 Controller 클래스를 상속받으며 IController, IActionFilter, IDisposable 인터페이스를 구현합니다.


모든 controller는 Controller라고 하는 접미사를 사용해서 이름을 지어야 합니다. 다음 예제를 보면 HomeController라고 되어 있는데요, action 메소드를 포함하고 있으며 view 페이지를 렌더링하기 위한 메소드를 제공합니다.


public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewData["Title"] = "Home Page";
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

    public ActionResult About()
    {
        ViewData["Title"] = "About Page";

        return View();
    }
}


Action 메소드


MVC Framework를 사용하지 않는 ASP.NET 응용프로그램에서는 사용자와의 상호작용이 페이지를 통해 이루어지지만, ASP.NET MVC 응용프로그램에서는 controller와 action을 통해 이루어집니다. controller 클래스는 action 메소드를 정의하며 원하는 만큼의 action 메소드를 포함할 수 있습니다.


Action 메소드는 보통 사용자와의 상호작용과 1대 1로 매핑이 됩니다. 예를 들면, 브라우저에 URL을 입력하거나 링크를 클릭하거나 폼을 전송하는 것들이 이에 해당됩니다. 이런 동작들은 서버에 대해 요청을 하게 되고 URL은 MVC Framework이 Action을 호출할 수 있는 정보를 포함하게 됩니다.


예를 들어, 사용자가 브라우저에 URL을 입력하면 MVC 응용프로그램은 Global.asax에 정의된 라우팅 규칙을 적용하여 URL을 해석하여 적용할 controller를 결정하고 controller는 수행할 action을 결정합니다.


기본적으로 URL은 controller 다음에 action 이 오는 하위 경로 구조를 하고 있습니다. 예를 들어 URL이 http://contoso.com/MyWebSite/Products/Categories 라면, 하위 경로는 /Products/Categories가 되고 "Products" 가 controller의 이름이며 "Categories" 가 action 의 이름이 됩니다.


만약 URL이 /Products/Detail/5 라고 하면 "Detail" 이 Action이 되고 5 는 Detail Action 메소드에 전달하는 매개변수 값이 될 것입니다.


ActionResult Return Type


모든 action 메소드는 ActionResult 에서 파생된 클래스의 인스턴스를 반환합니다.  모든 action 결과에 대한 base는 ActionResult이지만 action에 따라 여러가지 타입의 action result type이 존재할 수 있습니다.


다음은 내장 action result type입니다.

  • ViewResult : View 메소드에 의해 반환됩니다.
  • RedirectToRouteResult : RedirectToAction 과 RedirectToRoute 메소드에 의해 반환됩니다.
  • RedirectResult : Redirect 메소드에 의해 반환됩니다.
  • ContentResult : Content 메소드에 의해 반환됩니다.
  • JsonResult : Json 메소드에 의해 반환됩니다.
  • EmptyResult : action 메소드가 null을 반환해야 할 경우 반환합니다.

Action 메소드 매개변수


controller 클래스 내에서 URL 매개변수를 참조하는 방법은 여러가지가 있습니다. 기본적으로는 Request와 Response 객체를 사용하여 접근할 수 있습니다.


public void Detail()
{
    int id = Convert.ToInt32(Request["id"]);
}

기존에 사용하던 방법과 크게 다르지 않습니다.


하지만, 좀 더 편리하게 매개변수를 참조할 수 있는 방법이 있습니다.


Action 메소드 매개변수 자동 매핑


ASP.NET MVC Framework는 URL 매개변수 값을 매개변수에 자동으로 연결할 수 있는 방법을 제공하고 있습니다. 이 방법을 사용하게 되면 위에서 살펴보았던 매개변수 값을 받는 문장을 사용하지 않아도 됩니다.


public ResultAction Detail(int id)
{
    ViewData["DetailInfo"] = id;
    return View("Detail");
}

이렇게 하면 매개변수 id에 요청한 내용중 id라는 이름으로 된 값이 자동으로 연결이 됩니다. 별도의 Request 구문을 작성하지 않아도 되는 것이죠.


또한 Query String 대신 매개변수 값을 URL의 일부로 포함시키는 것이 가능해집니다. 예를 들어 /Products/Detail?id=3 와 같은 URL이 있다고 하면, 이 것은 /Products/Detail/3 처럼 바꿀 수 있습니다.

 

기본적인 라우팅 규칙은 /{controller}/{action}/{id} 와 같은 형태를 하고 있습니다. id 에 해당하는 값이 action 메소드의 매개변수로 자동으로 전달이 됩니다.

 

이번 내용은 거의 번역 수준이 되었네요... ^^

Posted by 나비:D
:
BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total :
Today : Yesterday :