2016-12-14 7 views
0

컨트롤러에서 호출하는 모델이 있기 때문에 webApp를 만들려고하고 충돌이 있습니다.하지만 컨트롤러가 동일한 컨트롤러에서 뷰를 변경할 때마다 내 모델을 다시 설정하고 초기 값을 다시 가져옵니다.두 개의 서로 다른 뷰에서 변수를 호출하는 방법

DataTable dt; 

public AdminUsers() 
{ 
    dt = (new Userdb()).GetUsers(); 
} 

public ActionResult Admin() 
{ 
    ... // do whatever with dt before showing the results 
    return View(this.dt); 
} 

public ActionResult Results() // dt resets with the initial values 
{ 
    return View(this.dt); 
} 

수정 후보기간에 값을 유지하려면 어떻게해야합니까?

+1

의 데이터 전송 POCO를 사용해야합니다 (일반적으로 데이터베이스를하지만,'Session'은 옵션이 될 수 있음) 다음 –

답변

3

이 목적을 위해 당신은 세션이 확인 항상 (() 당신의 AdminUsers에 예를 들어, 방법)

Session["dt"] = (new Userdb()).GetUsers(); 

을 초기화하기 때처럼 Session

을 사용하여 다음 값을 검색 할 수 있지만, null가 아닌 :

If(Session["dt"] != null) 
{ 
    DataTable myTable = (DataTable) Session["dt"]; 
    //Do whatever you need with your dt..... 
} 
-1

귀하는을 ViewData에 넣을 수 있습니다

0 12,
+1

과를? ViewData는 한 요청에 대해 유효합니다. – CodeCaster

0

당신은 세션이 현재 세션에 대한 데이터를 저장하고 다음 U가 해당 세션 내의보기에서 해당 데이터에 액세스 할 수 있도록 ... Session의 사용을 만들 수 ...

Session["data"] = dt; 

그리고보기 액세스에 세션, DataTable을로 변환하고 그것을 사용하는 것이 ..

(DataTable)Session["data"]; 
0

당신은 대신 dt 변수 인스턴스 변수하게 모든 행동에로드하고 사후에 레코드를 업데이트하지 말아야 ,이 방법은 당신이 항상 얻을 것이다 최신 최신 데이터. 세션을 사용하면 응용 프로그램의 확장 성이 제한되므로 사용하지 않는 것이 좋습니다.

또한, 대신 당신은 당신의 POST 방법에 어딘가에을 지속 할 필요가 DataTable