ASP.NET 소개

맛없는콩두유·2022년 10월 20일
0
post-thumbnail
post-custom-banner

Controller에서 View로 데이터 전달

Models 폴더에 클래스 파일인 User.cs 하나 만들고
prop + tab + tab을 이용해 getter/setter를 손 쉽게 만들 수 있다.

  • Models / User.cs
namespace AspNetCoreStudy2.Models
{
    public class User
    {
        // 사용자 번호
        public int UserNo { get; set; }

        // 사용자 이름
        public string UserName { get; set; }


    }
}
  • Controllers / HomeController.cs
using AspNetCoreStudy2.Models;
using Microsoft.AspNetCore.Mvc;
using System.Diagnostics;

namespace AspNetCoreStudy2.Controllers
{
    public class HomeController : Controller
    {
        private readonly ILogger<HomeController> _logger;
        
        public HomeController(ILogger<HomeController> logger)
        {
            _logger = logger;
        }

        public IActionResult Index()
        {
            //var firstUser = new User();
            //firstUser.UserNo = 1;
            //firstUser.UserName = "홍길동";


            var hongUser = new User
            {
                UserNo = 1,
                UserName = "홍길동"
            };

            // # 1번쨰 방식
            //return View(hongUser);

            // # 2번쨰 방식 ViewBag
            //ViewBag.User = hongUser;


            // # 3번쨰 방식 ViewData
            ViewData["UserNo"] = hongUser.UserNo;
            ViewData["UserName"] = hongUser.UserName;

            return View();
        }
 
        [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
        public IActionResult Error()
        {
            return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
        }
    }
}

View로 넘겨주는 방법은 세 가지 방법이 있다.

  			// # 1번쨰 방식
            //return View(hongUser);

            // # 2번쨰 방식 ViewBag
            //ViewBag.User = hongUser;


            // # 3번쨰 방식 ViewData
            ViewData["UserNo"] = hongUser.UserNo;
            ViewData["UserName"] = hongUser.UserName;

            return View();

방식에 따라 View에서 다르게 받는다!

  • View / index.cshtml
@{
    ViewData["Title"] = "Home Page";
}


<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    @* 1.   
    <h1>사용자 번호 : @Model.UserNo</h1>
    <h1>사용자 이름 : @Model.UserName</h1>
    *@
    @* 2.
    <h2>사용자 번호 : @ViewBag.User.UserNo</h2>
    <h2>사용자 이름 :  @ViewBag.User.UserName</h2>
    *@

	 //3.
    <h3>사용자 번호 : @ViewData["UserNo"]</h3>
    <h3>사용자 이름 : @ViewData["UserName"]</h3>
</div>

profile
하루하루 기록하기!
post-custom-banner

0개의 댓글