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" })) 
{ 
}