2016-11-20 2 views
0

나는 적어도 저에게 이상한 행동을하고 있습니다. 나는 분명히 다른 서명을 컨트롤러 내에서 두 가지 방법을 작성 :다른 HttpMethod를 사용하는 모호한 액션 메소드

[Route("~/Wallets/{walletId}/Transactions/Add")] 
public async Task<ActionResult> Add(long walletId) 

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Add(AddTransactionViewModel model) 

것은 내가 호출되는 GET 방식 (첫 번째) Ajax.BeginForm 사용하여 POST 메소드를 호출하려고 할 때마다입니다.

@using (Ajax.BeginForm("Add", "Transactions", 
    new AjaxOptions() { HttpMethod = "POST" }) 
{ 
    ... 
} 

왜 이런 일이 일어나는 것입니까? 물론 GET 메서드의 이름을 AddTransaction에 변경하면 코드가 작동하지만 그것이 그대로있는 이유를 이해하고 싶습니다.

답변

1

BeginForm이 내부적으로 GetVirtualPath을 사용하여 경로 테이블에서 URL을 가져 오기 때문입니다. 첫 번째 링크가 예제의 경로 테이블에 추가됩니다.

[HttpPost] 
[ValidateAntiForgeryToken] 
[Route("Add")] 
public async Task<ActionResult> Add(AddTransactionViewModel model) 
:

단순히 트릭을 할해야 다음과 POST 방식을 편집
관련 문제