asp.net-mvc-4 - Web.API 和 FromBody

标签 asp.net-mvc-4 asp.net-web-api

我有点困惑。我有一个 Controller (派生自 ApiController),它具有以下方法:

[ActionName("getusername")]
public string GetUserName(string name)
{
    return "TestUser";
}

我的路由设置如下:

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

当我尝试在 fiddler 中使用 GET 访问 /api/mycontroller/getusername/test 时,我不断收到 400 错误。

当我将 [FromBody] 添加到 GetUserName 中的 name 参数时,我发现一切正常。

我不知何故认为 [FromBody] 用于 HttpPost,表明该参数位于帖子正文中,因此不需要获取。看来我错了。

这是如何工作的?

最佳答案

您需要将路由更改为:

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

或将参数名称更改为:

[ActionName("getusername")]
public string GetUserName(string id)
{
    return "TestUser";
}

注意:其他路由参数必须与方法参数名称匹配。

关于asp.net-mvc-4 - Web.API 和 FromBody,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14739631/

相关文章:

c# - 带有 CDN 的 ASP.NET MVC 多虚拟路径 bundle

c# - 如何更改ckeditor图标颜色

javascript - .net mvc 4应用程序-从ajax调用 Controller 中的函数

asp.net - 如何批量更新用户的安全印章? Asp.net 身份

c# - 如何从 UseStatusCodePagesWithReExecute 中排除某些路由?

asp.net-web-api - "views"在 ASP.NET MVC WEB API 中的用途

asp.net - MVC 4 中集合和单个值之间内容协商的差异?

c# - Entity Framework 。依赖角色有多个具有不同值的主体

c# - 流畅的 API = 数据注释?

c# - 何时不使用 OpenId 连接