【发布时间】:2013-05-13 04:39:32
【问题描述】:
我正在尝试使用相对简单的代码创建一个表单:
@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 是可选的)。
我在这里缺少什么?您不能将 BeginRouteForm 与通过 MapHttpRoute 添加的路由一起使用吗? Html.BeginRouteForm 和 Ajax.BeginRouteForm 的行为是相同的(应该是,它们具有相同的基础)。显然,在这种情况下,我希望操作会返回“/api/persons”。
【问题讨论】:
标签: c# asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing asp.net-web-api-routing