2011-02-16 2 views
0

내 컨트롤러에서이 두 가지 방법이 있습니다Html.CanvasActionLink가 POST를 생성합니까?

Html.CanvasActionLink("Link", "MyMethod") 

내가 링크를 클릭하면, 두 번째 방법은 항상 호출, 그것은 POST를하고있다 :

public ActionResult MyMethod() 
{ 
} 


[HttpPost] 
public ActionResult MyMethod() 
{ 
} 

그리고보기

?

답변

0

코드가 단순히 컴파일되지 않기 때문에 같은 컨트롤러에 두 가지 방법을 사용할 수 없습니다. 동일한 클래스에서 같은 이름과 동일한 매개 변수를 갖는 두 개의 메소드를 갖는 것은 금지되어 있습니다.

public ActionResult MyMethod() 
{ 
} 

[HttpPost] 
public ActionResult MyMethod(SomeViewModel model) 
{ 
} 

요청에 사용되는 HTTP 동사에 따라 액션 호출자는 첫 번째 또는 두 번째 방법을 선택합니다. GET 요청은 첫 번째로 전달되고 POST 요청은 두 번째로 전달됩니다.

CanvasActionLink 확장 메서드 (표준 ASP.NET MVC가 아님)를 모르지만 두 번째 동작이 호출되면 POST (JavaScript AJAX 또는 HTML <form> 요소를 통해)를 사용한다는 의미입니다.

FireBug을 사용하면 클라이언트와 서버간에 전송되는 요청을 정확히 볼 수 있습니다. 당신의 페이스 북의 aplication 설정에서

+1

예, 내 실수, 내 문제의 모델 인수를 그리워 설정 "캔버스 포스트"를 비활성화해야합니다. 그러나 코드에는 필자의 주장이있다. CanvasActionLink는 Facebook SDK의 확장 메소드입니다. 문제는 메서드가 항상 POST를 발생시키기 때문에 호출 된 메서드가 첫 번째 메서드가 아니라 두 번째 메서드라는 것입니다. – Lacides