c# - BeginRouteForm 不适用于 API 路由?

标签 c# asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing asp.net-web-api-routing

我想用相对简单的代码创建一个表单:

@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'。

最佳答案

使用 MVC 5 和 Web API 2.2, View 中的以下标记对我有用:

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

关于c# - BeginRouteForm 不适用于 API 路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618738/

相关文章:

c# - 发布到 mvc actionresult 时,Json 数组对象始终为空

asp.net-mvc - 为什么将.Net MVC 4与WebApi一起使用时,我的HttpConfiguration类型没有ServiceResolver类型?

c# - 如何从 C# 中的 Web Api 方法正确获取字节数组?

asp.net-mvc - 将身份验证同时用于 MVC 页面和 Web API 页面?

c# - 3 位货币代码到货币符号

C#/.NET Timers 和 Win32 Sleep 函数都不准确

javascript - 如何在mvc4中实现日期时间选择器

entity-framework - Automapper - 更新嵌套子集合时出错

托管在 Windows 服务中的 c# wcf 在 5 分钟后空闲

c# - 有没有一种简单的方法可以通过非交换操作进行并行聚合?