当内容类型为application / x-www-form-urlencoded .net核心时,如何使用发布数据

时间:2018-07-27 03:11:48

标签: c# razor asp.net-core asp.net-core-2.0 model-binding

我有一个用例,我需要接受application/x-www-form-urlencoded个帖子数据并消耗查询字符串

[httpPost]
public void GetDetails([FromQuery] username)
{
   using (var reader = new StreamReader(Request.Body))
   {
       try
       {
           var line = await reader.ReadToEndAsync();
       }
       catch(exception ex)
       {
         //Do something
       } 
   }
}

为此,当我在Request.Body以上尝试时,流为null

我有一个解决方案,可以删除[FromQuery]并通过Reqeust.QueryString读取查询字符串,但是我们还有其他选择吗

1 个答案:

答案 0 :(得分:1)

[FromQuery][FromForm]可以结合使用来绑定参数。

[HttpPost]
public IActionResult GetDetails([FromQuery] string username, [FromForm] string formData) {
    //...Do something
    return Ok();
}

虽然上面的示例采用字符串形式的表格数据,但是如果需要,它也可以用于绑定到更复杂的对象。

引用Model Binding in ASP.NET Core