developer tip

ASP.NET MVC에서 Tempdata 사용-모범 사례

optionbox 2020. 11. 17. 08:02
반응형

ASP.NET MVC에서 Tempdata 사용-모범 사례


웹 응용 프로그램을 빌드하기 위해 ASP.NET MVC 3을 사용하고 있습니다.

내가하려는 것은 두 컨트롤러 사이에 값을 전달하는 것이지만이를 수행하는 데는 여러 가지 방법이 있지만 특히 TempData이를 사용 하는 데 관심 이 있습니다.

public ActionResult Action1()
{
    string someMessage;
    Test obj = SomeOperation();
    if(obj.Valid)
    {
        someMessage = obj.UserName;
    }
    else
    {
        someMessage = obj.ModeratorName;
    }

    TempData["message"] = someMessage;

    return RedirectToAction("Index");
}

public ActionResult Index()
{
    ViewBag.Message = TempData["message"]

    return View();
}

그래서 TempData여기 의 사용이 맞습니까? 최고의 프로그래밍 관행에서 이것이 올바른 사용 방법 TempData입니까?

어떤 실시간 케이스를 사용해야 TempData합니까?

참고 : 나는 다음 링크를 통과했습니다

감사


TempData다음 요청에만 필요한 데이터를 덤프 할 수있는 버킷입니다. 즉, TempData에 입력 한 모든 내용은 다음 요청이 완료된 후 삭제됩니다. 이는 양식 유효성 검사 오류와 같은 일회성 메시지에 유용합니다. 여기서 주목해야 할 중요한 점은 세션의 다음 요청에 적용되므로 다른 브라우저 창이나 탭에서 요청이 발생할 수 있다는 것입니다.

특정 질문에 답하려면 올바른 방법이 없습니다. 그것은 모두 유용성과 편의성에 달려 있습니다. 그것이 효과가 있고 말이되고 다른 사람들이 비교적 쉽게 이해한다면 좋은 것입니다. 당신의 특별한 경우에 매개 변수를 이런 식으로 전달하는 것은 괜찮지 만 그렇게해야한다는 것이 이상합니다 (코드 냄새?). 차라리 리소스 (리소스 인 경우) 또는 데이터베이스 (지속적인 값인 경우)에 이와 같은 값을 유지하고 싶습니다. 사용량에 따라 페이지 제목에 사용하고 있으므로 리소스처럼 보입니다.

도움이 되었기를 바랍니다.


MVC 3 이후에는 TempData의 지속성 동작이 변경되었으며, 이제 TempData의 값은 다음 요청뿐만 아니라 읽을 때까지 지속됩니다.

TempData 값은 읽거나 세션 시간이 초과 될 때까지 유지됩니다. 이러한 방식으로 TempData를 유지하면 TempData의 값을 단일 요청 이상으로 사용할 수 있기 때문에 리디렉션과 같은 시나리오가 가능합니다. https://msdn.microsoft.com/en-in/library/dd394711%28v=vs.100%29.aspx


TempData 지속성에 유의하십시오. 약간 까다 롭습니다. 예를 들어 단순히 현재 요청 내에서 TempData를 읽는 경우에도 제거되고 결과적으로 다음 요청에 사용할 수 없습니다. 대신 Peek방법 을 사용할 수 있습니다 . 이 멋진 기사를 읽는 것이 좋습니다.

MVC Tempdata, Peek 및 Keep 혼란

참고 URL : https://stackoverflow.com/questions/12422930/using-tempdata-in-asp-net-mvc-best-practice

반응형