2014-06-04 2 views
0

cshtml 파일에 양식이 있고 하단에는 단추가 두 개 있습니다.인수가 컨트롤러에 전달되었습니다. 컨트롤러의 다른 컨트롤러에서 메서드 호출

버튼 1 자신의 컨트롤러에서 [HttpPost] 메서드를 호출합니다.

<p> 
    <input type="submit" value="Submit" id="SubmitID" /> 
</p> 

버튼 2 나는 방법이 다른 컨트롤러, 예를 들어, XYZ에서 "추가"를 호출합니다.

@Html.ActionLink("Add btn", "Add", "XYZ", 
      new { id = Model.myId }, "") 

질문 : 방법 (단추 1에서) 컨트롤러 내부의 버튼 2에서 작업을 호출? 간단하게 : 다른 컨트롤러에서 메서드를 호출하십시오. new {id = Model.myId}을 컨트롤러에 전달하는 방법.

아마도 이보다 더 좋은 방법이 있을까요? 좋은 연습과의 확률로 그가하고 싶은 것일까 요? 그렇다면 내 결과를 어떻게 얻을 수 있습니까?

+1

구문 적으로 가능하지만 일반적으로 이런 종류의 문제를 해결하는 최선의 방법은 아닙니다. 그 기능을 다른 (정적) 클래스에 넣으면 모든 컨트롤러가 직접 해당 클래스를 호출 할 수 있도록 허용 할 수있는 솔루션입니까? 이것은 컨트롤러가 독립적으로 변경 될 수 있음을 의미합니다. 왜냐하면 XYZ가 ABC를 가리킨다면 ABC를 변경하면 XYZ에 영향을 미치기 때문입니다 (당신이 놓칠 수도 있음) – Flater

답변

1

나는 모든 세부 사항을 기억하지 수 있지만 1 개 컨트롤러 메소드 내에서 나는 다음과 같은 일을 사용 :

public ActionResult Method1(int id) 
{ 
var controller = new XYZ(); 
return controller.Add(id); 
} 
당신은 당신의 현재 컨트롤러 방법으로 위의 컨트롤러 호출을 추가해야합니다

.

업데이트 더 나은 해결 방법은 두 컨트롤러가 모두 호출 할 수있는 일반적인 방법입니다. 이것은 유지하기가 더 쉬울 것입니다.

+0

나는 이것을 한두 번 과거에 했었지만 항상 나중에 나쁜 생각 (일반적으로). 솔직히 말해서, 내가 좋아하는 컨트롤러를 사용하고 있는지 잘 모르겠습니다. 불쾌감은 없습니다. 유효한 코드이며이 작업도 수행했습니다. 그러나 이것이 최선의 선택 인 유스 케이스는 없습니다. 나는 틀릴 수 있었다, 누군가가 이것에 약간 빛을 비출 수 있으면 희망 했는가? – Flater

관련 문제