2011-09-09 3 views
2

를 재 할당ASP.NET MVC : 나는 다른 통화에 데이텀을 지속 할 필요가로서 나는 TempData 변수에 리디렉션에서 변수를받을 컨트롤러 액션에서 TempData

public ActionResult ChangePassword() 
{ 
    string t = (string)TempData["myVariable"]; // works ok when coming from the redirect 
    [..] 
} 

, 나는 반환하기 전에 재 할당하려고 보기.

public ActionResult ChangePassword() 
{ 
    string t = (string)TempData["myVariable"]; 
    [..] 

    TempData["myVariable"] = TempData["myVariable"]; 
    return View(); 
} 

I 바로 위로과 changepassword에 렌더링 된 페이지에서 POST 요청을 제출 이번에 TempData [ "인 myVariable은"] 널. 어쩌면 내가 바보 같은 짓을하고있을 수도 있지만 원하는 결과를 얻는 방법은 무엇일까요? 세션 변수를 사용하고 싶지 않습니다 (세션 변수를 오염시키지 않으려면 변수가 훨씬 오래 유지됩니다.) 양식 (숨겨진 변수)을 통해 다시 게시 할 수 있지만 서버 측 변수 만 유지하는 것을 선호합니다.

답변

4

나는 인 myVariable 당신이 숨겨진 필드에 persit 수있는 중요한 정보 보안 (보기를 변경) 및 다음 동작 요청에 게시하지 않은 경우 당신이 TempData.Keep()

0

TempData는 현재 요청의 컨텍스트 내에서만 유지됩니다. 클라이언트에 컨텐트를 반환하고 클라이언트가 다시 게시하는 경우이를 사용할 수 없습니다. 옵션은 꽤 표준, 당신은 설명 기본적으로 전용으로 :

  • 양식 변수를 사용 (당신이 언급 한 바와 같이 - 그리고 그 다음이 민감 할 수있는 암호 변경 필드 만약 내가 추측하고있어)
  • 사용하십시오 세션 변수 (당신은 또한 명시된 바와 같이!)
  • 응용 프로그램에서 다른 변수를 지속 - 사용자 정의 데이터베이스 필드 또는 사용자 프로필 또는 유사한 개인적으로

내가 세션 공급자와 이동, 또는 콘텐츠를 반환 피하려고 것 즉각적인 게시물을 모두 클라이언트에게 보내고, 가능한 경우 르 ...

0

을 찾고 생각합니다.