4

나는 폼 나는 비교적 간단한 코드를 만들려고 해요 있습니다 : 내가 ApiController 인 PersonsController을 가지고BeginRouteForm이 API 경로와 함께 작동하지 않습니까?

@using (Ajax.BeginRouteForm("DefaultApi", new { controller = "persons" }, new AjaxOptions {HttpMethod = "post", OnSuccess = "someSuccess"}))} 
{ 
    @Html.TextBoxFor(m => m.Name) 
} 

, 나는 WebApiConfig에서 다음 경로가 있습니다

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

을 그러나 BeginRouteForm 호출은 아무런 동작도 반환하지 않습니다. 결과 HTML :

<form action="" data-ajax="true" data-ajax-method="post" data-ajax-success="someSuccess" id="form0" method="post"> 
</form> 

보시다시피 작업이 비어 있습니다. 그것은 경로를 찾을 수 없다는 불평을하지 않습니다 (그것이 불가능할 경우), 그래서 어떻게 될까요? 나는 심지어 routeValues ​​객체에 빈 id를 제공하려했지만 시도하지 못했다. (id는 선택 사항이므로 필요하지 않지만).

무엇이 여기에 있습니까? MapHttpRoute를 통해 추가 된 경로로 BeginRouteForm을 사용할 수 없습니까? 이 동작은 Html.BeginRouteForm과 Ajax.BeginRouteForm에서 모두 동일합니다 (기본적으로 동일 함). 분명히 나는이 경우 액션이 '/ api/persons'로 돌아올 것으로 기대한다. 뷰에서 다음과 같은 마크 업

답변

0
MVC 5 갖는

및 웹 API 2.2은 나를 위해 일한 :

@using (Ajax.BeginRouteForm("DefaultApi", 
     new { controller = "User", HttpRoute = "true" }, 
     new AjaxOptions { HttpMethod = "POST", OnFailure = "onFailure", OnSuccess = "onSuccess" })) 
{ 
} 
관련 문제