2017-11-22 3 views
-1

i 첫 번째 (계층 이름) 컨트롤러의 매개 변수 값을 두 번째 컨트롤러로 전달하려고합니다. 리디렉션없이 두 번째 컨트롤러 .. 감사합니다. 어떤 도움 ..한 컨트롤러의 매개 변수 값을 다른 컨트롤러에 전달하십시오.

첫 번째 컨트롤러 : -

Public ActionResult firstcontroller(DataTable dt, String layertype, String layername) 

{ 
query= "some sql query" + layertype+ "where=" +layername+ ; 

} 

두 번째 컨트롤러 : -

Public ActionResult secondcontroller(DataTable dt, String searchval, String selectval) 

{ 
query= "some sql query" + searchval+ "where=" +layername+ ; 
} 
+0

리디렉션 _이 무엇입니까? (두 메소드 모두에서 무의미한'DataTable dt' 매개 변수를 제거해야합니다) –

+1

컨트롤러에서 "redirect"라는 매개 변수로 다른 매개 변수를 전달합니다. 어떤 목적으로'DataTable'을 인수로 사용합니까? 뷰에서'DataTable' 컬렉션 대신 viewmodel 클래스를 전달해야합니다. 부가 메모 : DB 쿼리를 작성하기 위해 문자열 연결을 사용하지 말고 대신 매개 변수화 된 버전을 사용하십시오. –

답변

1

나는 당신이 필요로 정확히 모르겠지만 당신은 다음 세션을 사용하여 리디렉션하지 않고 원하는 경우 다음과 같은 방법으로 작업 할 수 있습니다.

Public ActionResult firstcontroller(DataTable dt, String layertype, String layername) 
{ 
Session["layername"]=layername; 
query= "some sql query" + layertype+ "where=" +layername+ ; 
} 


Public ActionResult secondcontroller(DataTable dt, String searchval, String selectval) 
{ 
var layername = Session["layername"].toString(); 
query= "some sql query" + searchval+ "where=" +layername+ ; 
} 
+0

감사 세션 rocks !! –

0

session의 용도는 아닙니다. 대신 TempData을 사용하십시오.

Public ActionResult firstcontroller(DataTable dt, String layertype, String 
layername) 
{ 
TempData["layername"]=layername; 
query= "some sql query" + layertype+ "where=" +layername+ ; 
} 


Public ActionResult secondcontroller(DataTable dt, String searchval, String 
selectval) 
{ 
var layername = TempData["layername"].toString(); 
query= "some sql query" + searchval+ "where=" +layername+ ; 
} 
관련 문제