Phantom Programming 팬텀 프로그래밍
  • [ToDoList 앱 개발] ASP.NET Core MVC - 4편 데이터 입력
    2024년 11월 26일 16시 40분 24초에 업로드 된 글입니다.
    작성자: Devrun
    반응형

    이전 시간에 우리가 데이터 입력을 위한 Form을 생성했다. 이제 데이터를 입력하는 Form을 이용해서 데이터를 DB에 저장하고 출력하는 시간을 가져보자.

     

    진행하기 전 알아두어야 할 것

     

    Home -> 우리가 입력한 데이터가 출력되는 곳

    Create -> 우리가 데이터를 추가할 Form이 있는 곳

     

    이 두 가지를 알고 기억하고 넘어가자

     

    데이터 입력을 위한 Controller 작성

    using Microsoft.AspNetCore.Mvc;
    
    namespace ToDoList.Controllers
    {
        public class CreateController : Controller
        {
            public IActionResult Index()
            {
                return View();
            }
        }
    }

     

    위 코드는 CreateController.cs에 있다. 우리는 여기에 이제 데이터 입력을 위한 코드를 작성할 것이다.

     

    public class CreateController : Controller 바로 아래에 아래 코드를 입력하자

    private readonly AppDbContext _context;
    
    public CreateController(AppDbContext context)
    {
    	_context = context;
    }

     

    위 코드는 ASP.NET Core MVC에서 Controller가 DB와 상호작용을 하기 위해 Dependency Injection을 사용하겠다 선언한 것이다. 

    *Dependency Injection -> 의존성 주입 (D.I) 객체 간의 의존 관계를 외부에서 주입하여 관리하는 소프트웨어 설계 패턴

     

    AppDbContext -> 우리의 앱이 DB Context에 접근하기 위해 선언CreateController -> 이는 생성자로 Controller가 생성될 때 AppDbContext 인스턴스를 외부에서 받아와 _context에 저장

     

    아래는 완성된 코드이다.

    using Microsoft.AspNetCore.Mvc;
    using ToDoList.Data;
    
    namespace ToDoList.Controllers
    {
        public class CreateController : Controller
        {
            private readonly AppDbContext _context;
    
            public CreateController(AppDbContext context)
            {
               _context =  context;
            }
    
            public IActionResult Index()
            {
                return View();
            }
        }
    }

     

     

    자 이제 우리가 해야 할 것은 무엇일까? 그렇다 DB에 입력하기 위한 HTTP Post 작업을 해야 한다. 

            //Post
            [HttpPost]
            [ValidateAntiForgeryToken]
            public IActionResult Create(ToDoItem item)
            {
                if (ModelState.IsValid)
                {
                    _context.ToDoItems.Add(item);
                    _context.SaveChanges();
    
                    return RedirectToAction("Index", "Home");
                }
    
                return View(item);
            }

     

    위 코드는 DB에 데이터를 저장하라는 기능을 한다. 그와 동시에 데이터가 입력이 되면 이제 HomeController를 통해서 HomeView로 이동하라는 명령을 처리한다. 위 코드에 대한 설명은 아래 작성하겠다.

     

    HTTP POST 요청 처리

    Create(ToDoItem item) Method는 POST 요청으로 전달된 ToDoItem 모델에 데이터를 처리

    ToDoItem은 우리가 폼에 입력한 데이터를 바인딩 받는다.

     

    유효성 검사

    ModelState.IsValid는 ToDoItem 모델이 유효한지 확인

     

    Save Data

    모델이 유효성 검사를 통과하면 _context.ToDoItems.Add(item)을 통해 ToDoItems 테이블에 데이터를 추가

    _context.SaveChanges()를 호출하여 데이터베이스 변경 사항을 저장

     

    Redirection

    성공적으로 데이터 작업이 끝나면 Home Controller의 Index View로 리디렉션 한다.

     

    Code Flowchart

     

    위 플로우 차트는 코드의 흐름을 보여주는 것이다.

     

    이제 다음 글에서 우리의 ToDoList  Item을 출력하는 것을 만들어보겠다.

    반응형
    댓글