2014-05-15 3 views
0

로그인 페이지의 "ActionResult"메소드가있는 MVC 4에서 로그인 후 사용자 이름 (billnumber)을 기반으로 사용자 이름과 비밀번호가 텍스트 상자에 입력됩니다. 해당 billnumber (사용자 이름)의 데이터를 가져 와서 현재 모든 것이 잘 작동하고 있습니다. 하나의보기에서 사용자 이름을 가져 와서 추가 검증을 위해 다른 사람에게 보낼 수 있습니다. Viewdata에 "username"과 "usertypeID"를 저장하고 그 값은 다음 뷰로 전달되지만 ViewData의 데이터는 더 오랜 시간 동안 유지되지 않으며 페이지를 여러 번 (10에서 20 번) 새로 고침하려고해도 저장 및 전달했던 코드는 아래에 있습니다 액세스ViewData MVC 4의 값 보존

여기가 내가 값을 저장하는 곳입니다.

난을 ViewData FROM I가 파라미터로서 PatID 및 PersonType 통과하고

 String PatID = Convert.ToString(ViewData["message"].ToString()); 
     int PersonType = Convert.ToInt32(ViewData["person"]); 

값 어디서

public ActionResult ValidateLogIn(FormCollection postedFormData) 
    { 
     // codes 
    TempData["UsrName"] = LoginViewModel.LoginDataModel.UserName; 
      // codes 

} 


    public ActionResult LandingPage() 
    {   
     ViewData["message"] = TempData["UsrName"].ToString(); 
     ViewData["person"] =Convert.ToInt32(TempData["UserTypeID"]); 
     TempData.Keep(); 

     PatientDetailsViewModel PatientDetailsViewModel = new PatientDetailsViewModel(); 
      String PatID = Convert.ToString(ViewData["message"].ToString()); 
     int PersonType = Convert.ToInt32(ViewData["person"]); 

      PatientUnderDoctorDetailsViewModel = PatientUnderDoctorDataAccessService.PatientUnderDocLogInEnquiry(PatID); 
    } 

이 0은 여기에서 난을 ViewData에

 ViewData["message"] = TempData["UsrName"].ToString(); 
     ViewData["person"] =Convert.ToInt32(TempData["UserTypeID"]); 
     TempData.Keep(); 

을 저장할 곳이다 AND 다음 방법,

처음에는 Te를 사용하지 않았습니다. mpData.keep(); 그래서 한 번 오류를 얻으려고 한 번 atleast 페이지를 새로 고치면 검색 시도하고 TempData를 발견하지만, 나는 5 분 동안 응용 프로그램을 유휴 상태로두고 페이지를 한 번 새로 고치면 오랜 시간 동안 효율적이지 않다고 믿는다. 내가

이 알려 필요한 tempdata가 비어 (NULL)

내가했던 어떤 실수가, 또는 데이터가 I 때까지 변수에 저장 될 수있는이 문제를 해결하기 위해 더 나은 방법이 응용 프로그램을 종료하십시오.

enter image description here

+0

왜'Session' 객체를 사용하지 않습니까? –

+0

답장을 보내 주셔서 감사합니다 @inanikian, 내가 sesson 대 viewdata, 웹 사이트의 일부 ViewData에 대한 더 많은 (내가 틀렸다면 알려주십시오), 그리고 실제로 세션을 사용할 수있는 제안했다 더 많은 혼란을 겪었어요 Viewdata 이상, 나는 그것을 사용하여 마음을 모르지만, 쿠키로 데이터를 저장하지 않는 매개 변수를 전송하는 것이 가장 좋습니다, 감사합니다 – Manjuboyz

+0

당신은 이것을 위해 TempData 또는 Session을 사용할 수 있습니다. –

답변

0

이 링크는 도움이되기를 바랍니다. State Management In MVC

+0

이 문서를 공유 주셔서 감사합니다,하지만 난 이미이 문서를 통해 갔다, 그리고 무엇에 대한 모든 것을 보여주는 방법을 보여주지 않습니다 – Manjuboyz

0

임시 데이터를 사용하지 마십시오. 그것은 응용 프로그램 풀이 새로 고쳐 지거나 다른 프로세스 (웹 가든)를 사용하는 경우 손실됩니다.

User.Identity.Name은 유효성이 검사 된 사용자의 이름을 반환합니다.

데이터를 전달하는 경우 ViewData 또는 TempData 또는 ViewBag가 아닌 Models을 사용해야합니다.

+0

고마워요 사실, 내가이 값 (사용자 이름)을 다른보기로 전달할 때, 나는 (내가 틀렸다면 알려주도록) 믿는다. User.identity.Name은 대부분 동일한 페이지를 사용할 때 작동하므로 ViewData – Manjuboyz

+0

사용자를 사용하는 것을 선호했다. Identity.Name은 모든보기에서 사용 가능하므로 전달할 필요가 없습니다. 그것을 밖으로 시도하십시오. – KevDevMan