2013-05-23 5 views
1

저는 asp.net mvc를 처음 사용합니다.TempData 사용을 피하는 방법

다른 작업으로 리디렉션 할 때 TempData를 사용하고 있으며 정보로 URL을 "더티"하고 싶지 않습니다. 예를 들어,

[AllowAnonymous] 
public ActionResult ConfirmationEmailSent() 
{ 
    if (TempData["Username"] != null) 
    { 
     ViewBag.Username = TempData["Username"]; 
     return View("ConfirmationEmailSent"); 
    } 
    return View("Error"); 
} 

사용자는 사용자 이름이 포함 된 간단하고 무죄 인 웹 페이지를 얻을 수 있습니다. 그러나 사용자가 '새로 고침'버튼을 누르면 TempDate를 사용할 수 없으므로 "오류"보기가 표시됩니다. 쿼리 문자열에 표시되지 않은 정보로 작업으로 리디렉션 할 수 있고 사용자가 새로 고침 버튼을 누른 다음 동일한 페이지를 가져 오는 경우에도 사용할 수 있습니다. 아이디어가 있습니까? (세션 없음)

고맙습니다.

+0

actionresult에서 사용자 이름으로 사용자 이름을받지 못하는 이유는 무엇입니까? url을 망칠 것이므로 호출 함수 – Tassadaque

+0

에서 사용자 이름을 보내십시오. www.mywebsite.com/account/confirmation_sent 대신 www.mywebsite.com/account/confirmation_sent?username=blabla를 받으십시오. 나는 그것을 피하려고 노력하고있다. – dsb

+0

그런 다음 뷰 모델을 보냅니다. – Tassadaque

답변

0

필요한 것은 브라우저와 관련된 방식으로 둘 이상의 요청에 대해 정보를 유지하는 것입니다. QueryString과 Session은 두 가지 최상의 옵션입니다. 뷰가 양식 게시물의 결과 인 경우

, 당신은 그것을 숨겨진 입력을 만들 수 있지만, 새로 고침 할 때 사용자가 프롬프트를 얻을 것이다 (당신이 양식을 제출 하시겠습니까?), 그러나 이것은 좋지 않다 , 당신이 Post/Redirect/Get (PRG)을해야하는 것처럼.

에릭

0

쿠키가 원하는대로 작동하는 것 같습니다. 그런 다음 작업이 끝나면 삭제하십시오 (또는 만료일을 설정하지 마십시오. 세션이 끝나면 브라우저에서 삭제합니다).

관련 문제