2009-08-07 4 views
1

지금은 MVC 앱의 색인 페이지에서 POST와 관련된 작업이 있습니다. 하지만 모든 페이지 게시물을 처리하는 일반 처리기 동작이 필요하며 POST 처리기 동작 내에서 방금 전에 얻은보기를 알고 싶습니다. 내가 원하는 것은 아래에있다 : 어떤 아이디어?컨트롤러 및 이전보기

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult GenericPostHandler(NewAccountInfo info) 
    { 
     try 
     { 
      string currentview = //how to get View for which to handle the POST? 
      Persist(); 

      return RedirectToAction(StepManager.GetNextStep(currentView)); 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

답변

0
[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GenericPostHandler(NewAccountInfo info, string fromViewName) 
{ 
    ... 
} 

:

<% var actionUrl = Url.RouteUrl(new { 
    controller = "yourcontroller", 
    action = "genericposthandler", 
    fromviewname = "whereyoucamefrom" 
}); %> 

<form action="<%= actionUrl %>" method="post"> 
    ... 
</form> 

내가 워크 플로우를 구축하고 /yourcontroller/genericposthandler?fromviewname=whereyoucamefrom

1

난 당신이 하나의 특정 컨트롤러에서 하나의 액션에 대한 모든 요청을 전달하지만이 모든 HTTP 명령에 대해 활성화됩니다, 중 GET 또는 POST 또는 다른 경로를 쓸 수도있을 것 같군요.

달성하려는 것은 MVC의 정신에 대항하는 것입니다. 이 요구 사항 뒤에있는 아이디어가 무엇인지 말해 줄 수 있습니까?

나는 추측하려고 노력할 것이다. 각 게시물마다 일종의 사전 처리를 수행 하시겠습니까? 어쩌면 인증 확인, 활동 로그 등일 수 있습니다. 그렇다면 자신의 ActionFilter를 구현하고이 속성으로 모든 컨트롤러를 꾸밀 수 있습니다. 그러면 모든 호출이이 필터에 의해 가로 챌 것이며 필요한 모든 것을 수행 할 수 있습니다. 그런 다음 요청을 일반 처리기 (작업)로 전달하거나 다른 곳으로 라우트합니다. 뷰에서

+1

같은 URL을 생성합니다. 기본적으로, 당신이 어떤 관점에서 왔는지를 아는 것만으로 나는 어떤 관점으로 가야할지 말할 수 있습니다. MVC의 정신에 대해 어떻게 생각합니까? 나는 여전히 컨트롤러를 사용하여 작업 라우팅을 수행하고 있는데, 나는 단지 중복 코드를 줄이고보다 일반적인 것을 만들려고 노력하고있다. 감사. – Crios