2017-11-24 2 views
1

컨텍스트 : iddate :라우팅 조치 : 애플리케이션은 GET 및 POST 메소드 사이 혼동 도착

GET 메소드로 구성보기이 시점에서 두 개의 매개 변수. 이러한 관점에서, 방법

[HttpGet] 
    public async Task<IActionResult> DetailsAdmin(int? id, [ModelBinder(typeof(PModelBinder))]DateTime? date) 
    { 
     {...} 
    } 

POST 메소드

[HttpPost, ActionName("DetailsAdmin")] 
    [ValidateAntiForgeryToken] 
    [Route("HechosLiquidadors/DetailsAdmin/{id}")] 
    public async Task<IActionResult> DetailsAdmin(int? id) 
    { 
     {...} 
    } 
얻기 파라미터 id

를 사용 POST 방법을 통해 제어기로 다시 정보를 송신하는 형태가있다

프로 블룸 :

보기 내부의 양식이 정보를 컨트롤러로 보내면 POST 작업 대신 GET 조치로 이동합니다.

양식 : 나는 POST의 조치 방법하지만 운에 사용자 지정 라우팅을 사용하려고했습니다

<form id="@(String.Format("{0}{1}","form",Model[i].HechosID))" 
asp-action="DetailsAdmin" method="post" asp-route-id="@Model[i].HechosID" ></form> 

. 폼이 POST 작업을 올바르게 가리 키도록이 문제를 어떻게 해결할 수 있습니까?

답변

0

두 가지 작업 방법 모두에서 모든 매개 변수는 선택 사항입니다. 따라서 Mvc는 "Best candidate"메소드를 선택할 수 없습니다. 첫 번째 작업을 다음과 같이 변경하고 ID가 0이 아닌 것을 확인하십시오 :

[HttpGet] 
public async Task<IActionResult> DetailsAdmin(int id = 0, [ModelBinder(typeof(PModelBinder))]DateTime? date) 
{ 
    if (id != 0) 
    { 

    } 
    {...} 
}