4

我有一个表格,我想用比较简单的代码来创建:BeginRouteForm不适用于API路由?

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

我有一个PersonsController,这是一个ApiController,和我有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

有5 MVC和Web API 2.2在视图下面的标记为我工作:

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