• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

TempData["Message"] 의 값이 NULL이 되는 현상에 관하여 문의드립니다.

21.05.08 00:16 작성 조회수 250

0

03.MVC 패턴 강의에서

로그인 정보가 일치해서 로그인에 성공했을 때

TempData["Message"] = "로그인이 성공적으로 이루어졌습니다." 이렇게 해당 메시지 문자열을 넣고 RedirectToAction("Index", "Membership")를 통해 Index 액션 메소드를 실행 하고 해당 Index 뷰에서 TempData["
Message"] 를하면 해당 값이 NULL 빈 값으로 나옵니다.

해당 관련하여 해결 방안이 있을가요? 제가 무언가 잘못 입력한 것 같지는 않긴하거든요.

답변 4

·

답변을 작성해보세요.

0

dndi12님, 반갑습니다.

작성하신 프로젝트 파일 전체를 압축해서 구글 드라이브 등에서 공유해 주시면

제가 다운로드 받아서 확인해 보고 이상유무를 알려드리겠습니다.

0

동키님, 작성하신 프로젝트 파일 전체를 압축해서 구글 드라이브 등에서 공유해 주시면

제가 다운로드 받아서 확인해 보고 이상유무를 알려드리겠습니다.

에디터에 파일 첨부는 안되는 것 같네요.

정말 번거로우시겠지만, 제가 소스를 구동해 보고 안되면 마이크로소프트에 문의해서라도 알려드리겠습니다.

질문하신 내용은 asp.net core의 기본동작과 관련되기 때문에 꼭 짚고 넘어가야 할 문제거든요.

0

동키님.

보내주신 소스로 확인했을 때, 제 컴퓨터에서는 TempData["Message"] 값이 이상없이 "로그인이 성공적으로 이루어졌습니다." 메시지를 출력하고 있는 것을 확인했습니다.

단지, userId와 password 값이 LoginInfo 클래스의 유효성 검사로 인해서 각각 6자씩 입력해야 로그인됩니다.

번거로우시겠지만, BreakPoint(갈색 줄로 된 부분)를 걸어서 F10을 눌러서 한 줄 한 줄 넘어가면서 TempData["Message"]에 정확히 값이 들어가 있는지 확인 부탁드려요.

BDK님의 프로필

BDK

질문자

2021.05.08

return RedirectToAction 하기 전까지는 값이 있다가 Index.cshtml의 부분에서 값이 사라져있네요.

혹시 해당 관련해서 의심 가는 부분 있으신지요.

0

동키님, 반갑습니다.

작성하신 MembershipController.cs와 Index.cshtml 파일 전체 코드를 답변으로 달아주시면 제가 실행해서 확인하고 알려드리겠습니다.

참고로, 24번 강의에서 프로젝트 리소스를 다운로드 받아 확인하실 수 있습니다.

감사합니다.

BDK님의 프로필

BDK

질문자

2021.05.08

MembershipController.cs

using Microsoft.AspNetCore.Mvc;

using NetCore.Web.Models;

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;

namespace NetCore.Web.Controllers

{

    public class MembershipController : Controller

    {

        public IActionResult Index()

        {

            return View();

        }

        [HttpGet]

        public IActionResult Login()

        {

            return View();

        }

        [HttpPost]

        [ValidateAntiForgeryToken]

        public IActionResult Login(LoginInfo login)

        {

            string message = string.Empty;

            if (ModelState.IsValid)

            {

                string userId = "dk";

                string password = "111";

                if (login.UserId.Equals(userId) && login.Password.Equals(password))

                {

                    TempData["Message"] = "로그인이 성공적으로 이루어졌습니다.";

                    return RedirectToAction("Index", "Membership");

                }

                else

                {

                    message = "로그인되지 않았습니다.";

                }

            }

            else

            {

                message = "로그인 정보를 올바르게 입력하세요.";

            }

            ModelState.AddModelError(string.Empty, message);

            return View();

        }

    }

}

Index.cshtml

@{

    ViewData["Title"] = "멤버십";

    Layout = "~/Views/Shared/_Layout.cshtml";

}

<h2>@ViewData["Title"]</h2>

<div class="text-info">@TempData["Message"]</div>