2012-02-04 4 views
0

컨트롤러를 호출 할 때 뷰 응답이 다른 컨트롤러를 호출 할 수 있습니다. MVC에서 모든보기 및/또는 컨트롤러가 단일 응답으로 호출되었는지 확인할 수있는 방법이 있습니까?ASP.NET MVC 컨트롤러/뷰 호출

감사합니다.

+0

Google 액션이있는 컨트롤러가 있습니다. 우리는 일종의 견해를 돌려주는 Action을 가지고 있습니다. 그리고 우리는 귀하의 페이지를위한 마크 업인 뷰를 가지고 있습니다. 컨트롤러가 뷰를 호출하지 않으면 컨트롤러의 액션이 뷰를 렌더링합니다. 당신이하려고하는 것에 대한 이해를주기 위해 질문을 조금 더 구체화 할 수 있습니까? 어쩌면 당신이 감지하고자하는 것에 대한 빠른 예제를 가지고있을 것입니다. (예를 들어, Controler A, Action B는 Action C를 호출하고 View F 또한 View C를 반환합니다.) –

+0

Html.Action은 컨트롤러를 호출하고 뷰를 제공 할 수 있습니다. 의미. 본질적으로, 나는/Home/Index로 이동할 때 실행 된 뷰와 컨트롤러의 이름을 얻고 싶다. –

답변

0

프레임 워크가이를 직접 노출한다고 생각하지 않지만 OnActionExecuted 메서드에 연결하여 고유 한 요청 식별자와 함께 호출되는 각 동작을 기록 할 수 있습니다. global.asax.cs의 Application_BeginRequest에 연결하여 해당 요청의 고유 ID로 사용할 GUID를 생성 할 수 있습니다 (세션에 저장되지만 각각의 새 요청에 대해 덮어 씁니다). 기본 컨트롤러를 사용하고이 컨트롤러에서 모든 컨트롤러를 파생 시키면 기본 컨트롤러 인 OnActionExecuted 메서드에 로깅을 넣어 DRY 상태로 유지할 수 있습니다.

또는 사용자 정의 ActionInvoker를 만들고 거기에 로깅을 넣을 수 있습니다.

이것은 어쨌든 시작하는 곳이지만, 더 좋은 방법이있을 수 있습니다.

참고 :이 작업은 요청시 서버 쪽으로 호출되는 작업을 묶습니다. 클라이언트가 렌더링 된 뷰를 수신하면 AJAX 요청은 클라이언트 측에서 시작되어 다른 요청으로 표시됩니다. 이들을 포함해야하는 경우 고유 한 ID 생성 코드는 비 AJAX 요청에서만 실행되어야하며 그렇지 않으면 세션에 기존 ID를 남겨 둡니다. 일반적으로 AJAX 요청에는이를 구별 할 수있는 HTTP_X_Requested_With 헤더가 있습니다.

+0

고마워, 내가 살펴볼거야. 나는 AJAX 문제를 예상했다. 나는 서버에서 호출 된 것만으로도 괜찮습니다. –