2012-04-03 5 views
3

TempData는 Asp.Net MVC의 세션에 의해 백업되지만 현재 요청이 지속되는 동안에 만 유효하다는 것을 읽었습니다. 이렇게하면 Redirect2Action 등에 적합합니다. 현재 요청에 대해서만 유효하다는 것을 감안할 때 WebFarm의로드 밸런서 및 세션에 문제가 발생하지 않는다는 의미입니다. 기본적으로 요청 당 하나의 웹 서버에만 있기 때문입니다.TempData가 세션에 의해 백업 된 이유는 무엇입니까?

대신 Request.Items 컬렉션에서이를 백킹하는 옵션이 있습니까?

답변

4

TempData는 현재 유효하며 next request에만 유효하며 이는 세션 상태에 저장됩니다. 요청과 함께 저장하면 작동하지 않습니다.

세션 상태 (예 : 부하 분산)에 항목을 저장하지 못하게하면 TempData도 손상됩니다.

당신은 당신이 ViewDataDictionary 개체를 사용하는 것과 동일한 방법으로 데이터를 전달하는 TempDataDictionary 객체를 사용할 수 있습니다 TempDataDictionary

에 대한 설명서를 참조하십시오. 그러나 Keep 메서드를 사용하여 보존 키를 하나 이상 표시하지 않는 한 TempDataDictionary 개체의 데이터는 한 요청에서 다음 요청까지만 지속됩니다 ( ). 키 보유가 표시되어있는 경우 키는 다음 요청에 대해 보관됩니다.

TempDataDictionary 개체의 일반적인 용도는 다른 작업 메서드로 리디렉션 될 때 작업 메서드의 데이터를 전달하는 것입니다. 예를 들어 작업 메서드는 RedirectToAction 메서드를 호출하기 전에 컨트롤러의 TempData 속성 (TempDataDictionary 개체를 반환 함)에 오류에 대한 정보를 저장할 수 있습니다. 다음 작업 메서드는 오류를 처리하고 오류 메시지를 표시하는보기를 렌더링 할 수 있습니다.

+2

사실 MVC2의 TempData는 다음에 요청하거나 10 개의 요청이 내려지는 키가 액세스 될 때까지 유지됩니다. http://blog.donnfelker.com/2010/02/26/aspnet-mvc2-tempdata-now-persists/ –

관련 문제