2013-04-08 4 views
0

시나리오 : 사용자가 성공적으로 로그인 한 후, 내가 계정 객체를 생성 (Account 클래스 내 모델의 일부) 및 인출과에 사용자의 정보를 저장할. 이 Account 객체를 모든 내 컨트롤러 (HomeController, AccountController 등)에 액세스 할 수있게하려면 모든 컨트롤러 내부에서 내용을 편집 할 수 있어야합니다. (1)이 시나리오를 어떻게 달성 할 수 있습니까? (2) 한 컨트롤러에서 다른 컨트롤러로 모델 객체를 전달하려면 어떻게해야합니까?여러 컨트롤러에서 Model 객체를 사용하는 방법은 무엇입니까?

+0

당신이 그것을 유지 하시겠습니까과 나중에 다른 요청에서 사용 하시겠습니까? 아니면 (단일) 요청이 지속되는 동안 그것을 사용하고 전달하면됩니까? –

+0

사용자가 로그 아웃 할 때까지 계속 유지하려고합니다. –

답변

0

나는 사용자가 그런 다음 세션을 사용할 수 있습니다

을 로그 아웃 할 때까지 그것을 유지하려는. 그러나 많은 정보를 저장하지 않는 것이 좋습니다. 예를 들어 당신이 모델 또는 법인이 그래서 :

public class AccountModel { 
    public int Id {get;set;} 
    public string Username {get;set;} 
    // and a whole lot more of properties 
} 

을 나는, 당신은 단지 identifier 필드를 저장 제안 중 하나 Id 또는 Username. 다른 요청이 와서 당신도 같은 모델, 당신은 할 수 요청 또는 업데이트의 유효성을 검사 할 필요가 그런 때

  • 필요한 필드 해당 사용자 및 모든 관련 정보
  • 업데이트에 대한 데이터를 다시 가져 오기를
  • 데이터베이스에 저장

그래서 당신이 할 법한 :

// to save it in a session after logging in 
Session["current_user_id"] = id_variable; 
// to retrieve it from session after another request comes in 
var id = (int)Session["current_user_id"]; 
// fetch from your database 
// do the necessary update 
// persist the changes 
+0

고마워. 나는 당신이 제안하는 것처럼 행동 할 것이다. 세션을 사용하여 사용자의 AccountID를 저장 한 다음, 필요할 때마다 데이터베이스에서 그의 세부 정보를 가져 오는 데 사용한다. –

+0

당신을 진심으로 환영합니다. 세션이 만료되므로 세션 항목이 null이 아닌지 확인하십시오. –

0

(1) 어떻게이 시나리오를 달성 할 수 있습니까?

액세스해야 할 때 데이터 저장소에서 계정 모델을 검색 할 수 있습니다.

(2) 한 컨트롤러에서 다른 컨트롤러로 모델 개체를 전달하려면 어떻게해야합니까?

(1)를 참조하십시오. 데이터 저장소에서 데이터를 가져오고 있으므로이를 전달할 필요가 없습니다.

+0

사용자가 로그인하면 Account 개체를 만들고 데이터베이스에서 그의 세부 정보를 가져 와서 계정 개체를 채 웁니다. 그런 다음 다른 컨트롤러 (보기에서 사용자가 자신의 계정 정보를 편집 할 수있는 기능 제공)에서 편집 한 내용을 이전에 만든 SAME 계정 개체에 저장하고 변경 내용을 데이터베이스에 저장합니다. –

관련 문제