ASP.Net Web API 2属性路由的HTTP POST操作未获取正确的参数

dumble

我有一个简单的ASP.Net Web API 2控制器:

public class TestController : ApiController
{
    [Route("api/method/{msg?}")]
    [AcceptVerbs("GET", "POST")]
    public string Method(string msg = "John")
    {
        return "hello " + msg;
    }
}

和一个简单的HTML表单对其进行测试。

<form action="/api/method/" method="post">
    <input type="text" name="msg" value="Tim" />
    <input type="submit" />
</form>

当我加载页面并提交表单时,结果字符串为"hello John"如果我将表单的方法从更改为postget则结果更改为"hello Tim"为什么将msg参数发布到控制器后仍未路由到操作?

==========编辑1 ==========

只是在HTTP GET令人分心的情况下,此版本的控制器也无法msg从发布的表单中接收正确的参数:

[Route("api/method/{msg?}")]
[HttpPost]
public string Method(string msg = "John")
{
    return "hello " + msg;
}

==========编辑2 ==========

我没有更改默认路由,因此它仍然看起来像这样:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
su8898

POST如果您使用的是html ,则方法中的参数将不会立即反序列化form使用该[FromBody]属性获取的值msg

[HttpPost]
[Route("api/method")]
public string Method([FromBody] string msg)
{
    return "hello " + msg;
}

否则,您必须使用Fiddler(或类似的Web调试器)对方法进行调用POST并将msg用作查询字符串。

如果您真的想使用HTML Form不使用[FromBody]属性,请尝试以下操作

[HttpPost]
[Route("api/method")]
public string Method()
{
    var msg = Request.Content.ReadAsFormDataAsync();
    var res= msg.Result["msg"];
    return "hello " + res ;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

找不到ASP.NET Web API 2属性路由

来自分类Dev

在ASP.NET Web API 2中自动将操作名称设置为路由属性

来自分类Dev

获取当前ASP.NET Web Api 2操作的URL

来自分类Dev

使用asp.net Web API 2属性路由创建可以在URI中接受DateTime的路由

来自分类Dev

Asp.net Web API的按操作名称路由路由

来自分类Dev

ASP.NET Web API 属性路由到错误操作

来自分类Dev

ASP.NET Web API 5.2.3属性路由返回404

来自分类Dev

ASP.NET Web API 5.2.3属性路由返回404

来自分类Dev

ASP.NET Web API中带有可选参数的属性路由

来自分类Dev

ASP.net Web API 2路由属性不起作用

来自分类Dev

ASP.NET Web Api 2-子域属性路由

来自分类Dev

使用角度$ http获取与ASP NET Web API

来自分类Dev

使用角度$ http获取与ASP Net Web API

来自分类Dev

Asp.Net Web Api 2奇怪的路由行为

来自分类Dev

ASP.NET Web Api 2路由

来自分类Dev

ASP.NET Web API 2 操作 DELETE 与 guid

来自分类Dev

ASP.NET Web API 2 CRUD 操作与实体框架

来自分类Dev

ASP.NET Web API操作缓存

来自分类Dev

ASP.Net Web API操作结果

来自分类Dev

Asp.Net Web Api Multipost参数

来自分类Dev

从Asp.net Web API 2过滤器属性响应返回JSON的正确方法

来自分类Dev

如何将参数从 AngularJS $http.post 传递到 ASP .NET Web API 核心

来自分类Dev

如何将ASP.NET Web API属性路由与复杂的对象参数一起使用?

来自分类Dev

ASP.NET Web API POST参数为null

来自分类Dev

Angular2 $ http获取具有路由属性的Web api控制器的请求

来自分类Dev

ASP.NET Web API-未获取对控制器文件的更改

来自分类Dev

如何在Asp.Net Web Api中正确设置路由路径

来自分类Dev

ASP.NET MVC操作未获取参数值

来自分类Dev

具有重载的ASP.NET MVC Web API属性路由

Related 相关文章

热门标签

归档