2011-04-05 3 views
0

actionlink를 사용하여 별도의 컨트롤러에서 작업을 호출하려고합니다.별도의 컨트롤러 (ASP.NET MVC3)에서 호출 가져옵니다

문제는 [HttpGet] 및 [HttpPost] 작업이 모두 호출되고 포스트 메서드가 작업이 호출 된 뷰를 반환하므로 아무 것도 표시되지 않습니다.

가져 오기 방법 :

@Html.ActionLink("View", "View", "Pages", new { id = Model.FormId, index = item.Index-1 }, null) 
:

[HttpGet] 
     public ActionResult View(int id, int index) 
     { 
      var form = formService.GetForm(id); 
      var pageModel = new PageViewModel(); 

      var page = form.Pages.ElementAt(index); 

      ModelCopier.CopyModel(page, pageModel); 
      ModelCopier.CopyModel(form, pageModel); 

      return View(pageModel); 
     } 

포스트 방법이 (다른 컨트롤러에 의해 반환 된보기에서)보기에서라고 어떻게

[HttpPost] 
    public ActionResult View(PageViewModel pageViewModel) 
    { 
     if (!ModelState.IsValid) 
     { 
      return RedirectToAction("Details", "Forms", new { id = pageViewModel.FormId }); 
     } 
      var pageToEdit = pageService.GetPage(pageViewModel.PageId); 

      ModelCopier.CopyModel(pageViewModel, pageToEdit); 

      pageService.SavePage(); 
      return RedirectToAction("Details", "Forms", new {id = pageViewModel.FormId}); 
    } 

여기서 내가 뭘 잘못하고 있니? 기본적으로 업데이트/편집 기능으로 작동하길 원합니다. 그리고 반환 된보기는 viewmodel에 대한 간단한 양식을 포함합니다.

난 당신이 작업 링크를 사용 할 수 있습니다 생각하지 않는다
+0

예상되는 동작을 명확히 할 수 있습니까? 두 가지 행동이 모두 부름 받고 있다는 것은 무엇을 의미합니까? 브라우저는 하나의 요청 만 발행해야합니다. – marcind

답변

0

액션을 제출하여야한다 링크가 GET 요청을 발행합니다. url과 매개 변수를 캡처하고 POST 메서드를 사용하여 새 양식을 동적으로 작성 및 제출하거나 Ajax POST를 수행하는 JavaScript 함수를 구현해야합니다. 이 기능을 랩핑하기 위해 자신 만의 HTML 도우미를 작성할 수 있지만 태그 (Html.ActionLink에 의해 생성 된 태그)를 클릭하는 기본 기능은 GET 요청을 발행합니다.

+0

좋은 조언, 감사합니다! – tohereknowswhen

+0

실을 통해 읽은 후에 다른 질문이 있습니다. 내가 원하는 건 Get Request이다.하지만 Post Action을 트리거한다. 내가 잘못? – tohereknowswhen

+0

컨트롤러 동작을 GET 요청에 접근 가능하게하려면'HttpPost' 속성을 제거해야합니다. GET과 POST는 상호 ​​배타적이며, 어떻게 든 두 가지를 동시에 수행하려는 의도는 HTTP에 대한 근본적인 오해를 반영하는 것으로 보입니다. HTTP 사양 문서는 http://www.w3.org/Protocols/rfc2616/rfc2616.html에서 볼 수 있습니다. – smartcaveman

0

은 - 볼이 question

옵션은 간단한 형태로 데이터 또는 스왑을 게시 할 jQuery를 사용하고

+0

감사합니다. jQuery를 사용해 보겠습니다. – tohereknowswhen

관련 문제