2012-12-17 21 views
2

나는 컨트롤러 이름을 where 절 비교 매개 변수 중 하나로 전달하고자하는 SQL 쿼리를 가지고있다. 그리고 응용 프로그램에는 많은 컨트롤러가 있습니다. 컨트롤러 이름에 따라 다른 쿼리 결과가 실행됩니다. 그렇다면 컨트롤러의 이름을 제 3의 컨트롤러에 어떻게 전달할 수 있습니까?다른 컨트롤러의 컨트롤러 동작에서 컨트롤러 이름을 전달하는 방법은 무엇입니까?

@ViewContext.RouteData.Values["controller"]을 사용하면 제어기의 이름을 얻을 수 있지만 해당 제어기에서만 볼 수 있습니다. 그렇다면 다른 컨트롤러 동작 방식에서는 어떻게이를 달성 할 수 있습니까?

+0

잘 이해하면 컨트롤러의 이름을 동작 메서드 매개 변수로 전달하면됩니다. – mipe34

+0

나는 홈 컨트롤러의보기에서 컨트롤러의 이름을 얻고있다. 그래서이 뷰에서 Testcontroller 액션 메서드를 전달하려고한다. 이것이 어떻게 성취 될 수 있는지 모른다. – Krish

+0

그리고'@Html.ActionLink'를 사용하여 거기를 탐색하려는 의도가 있거나'@Html.RenderAction'을 사용하여 같은 페이지에서'TestController' 액션의 결과를 렌더링하기를 원하십니까? – mipe34

답변

1

ASP MVC에서 값을 작업 메서드로 전달하는 방법에는 여러 가지가 있습니다. 요청 유형에 따라 다릅니다. GET 요청

// navigation to action 
@Html.ActionLink("link","myAction","otherCon", new {controllerNamePar = ViewContext.RouteData.Values["controller"]} 

// render result of action into current view 
@{Html.RenderAction("myAction","otherCon", new {controllerNamePar = ViewContext.RouteData.Values["controller"]}} 

controllerNamePar에 대한

예는 URL의 쿼리 문자열로 전송됩니다. POST 요청

@using (Html.BeginForm("MyAction", "OtherCon", FormMethod.Post)) 
{ 
    @Html.Hidden("controllerNamePar", ViewContext.RouteData.Values["controller"]) 
    <input type="submit" value="OK" /> 
} 

controllerNamePar위한

예 HTML 형식의 일부로 전송된다.

+0

TestController에 대한 뷰가 존재하지 않습니다. 이 컨트롤러에는 ajax 호출을 사용하여 호출되는 메서드 만 포함되어 있으며이 메서드는 데이터베이스에서 일부 레코드를 반환합니다. – Krish

+0

상관 없어요. 액션 메소드에 값을 전달하는 유일한 방법은 QueryString 또는 HTML 형식을 사용하는 것입니다. 그리고 당신은 충분한 정보를 제공하지 못하여 어떻게 당신이 당신의 과제를 성취하려고하는지 알았습니다. 그래서 나는 두 가지 옵션을 설명했습니다. 조금 더 질문을 확장 해 주실 수 있습니까? (홈 뷰, 홈 컨트롤러, 다른 컨트롤러와 같은 시나리오를 수행하려고 시도한 일부 코드를 보여주십시오). – mipe34

관련 문제