2011-11-01 3 views
0

ASP MVC3에서 RedirectToAction이 세션의 데이터를 죽입니다 ... 왜?ASP.MVC RedirectToAction이 데이터를 죽입니다. 세션

이 코드를 고려하십시오.

[HttpGet] 
public ActionResult RequestTestExtract() 
{ 
    return View(new ExtractRequestViewModel()); 
} 



[HttpPost] 
public ActionResult RequestTestExtract(ExtractRequestViewModel viewModel) 
{ 
    var currentExtracts = (Session["Extracts"] as Dictionary<string, bool>) ?? new Dictionary<string, bool>(); 
    currentExtracts.Add(viewModel.fileName, false); 
    Session["Extracts"] = currentExtracts; 

    // typing 
    // ?Session["Extracts"] 
    // in immediate window before RedirectToAction shows a value 
      // typing it after does not 
    return RedirectToAction("RequestTestExtract"); 
} 

조치로 리디렉션하지 않고보기를 리턴하면 세션에는 여전히 거기에 저장된 데이터가 있습니다.

RedirectToAction이 중요하므로 POST 페이지가 아닌 GET 페이지에 사용자를 남겨두면 성가신 재 게시 대화 상자가 표시되지 않습니다.

편집 :

이 내가이를 삭제할 때 제대로 작동 내 컨트롤러 [sessionState의 (SessionStateBehavior.ReadOnly)]가 상단에 있었다.

+0

당신은'TempData'를 사용하려 했습니까? –

+0

세션을 통해이를 사용하는 이점은 무엇입니까 – Peter

+0

제가 정확하게 기억한다면 TemData는 여전히 세션 기반입니다. –

답변

0

이것은 올바르게 작동하는이 컨트롤러를 삭제하면 [SessionState (SessionStateBehavior.ReadOnly)] 내 컨트롤러의 맨 위에 있습니다.

관련 문제