Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#.net核心web api x-www-form-urlencoded参数始终为空_C#_Asp.net Core Webapi_X Www Form Urlencoded - Fatal编程技术网

c#.net核心web api x-www-form-urlencoded参数始终为空

c#.net核心web api x-www-form-urlencoded参数始终为空,c#,asp.net-core-webapi,x-www-form-urlencoded,C#,Asp.net Core Webapi,X Www Form Urlencoded,我有一个方法看起来有点像这样: /// <summary> /// Updates the status to paid /// </summary> /// <param name="data">The data from world pay</param> /// <returns></returns> [HttpPost] [Consumes("application/x-www-form-urlencoded")]

我有一个方法看起来有点像这样:

/// <summary>
/// Updates the status to paid
/// </summary>
/// <param name="data">The data from world pay</param>
/// <returns></returns>
[HttpPost]
[Consumes("application/x-www-form-urlencoded")]
public IActionResult Residential([FromForm] string data)
{
    if (string.IsNullOrEmpty(data)) return BadRequest("No data was present");

    var model = JsonConvert.DeserializeObject<WorldPayResponseModel>(data);

    // ----- removed from brevity ----- //

    return Ok(true);
}
//
///将状态更新为“已付款”
/// 
///世界薪酬数据
/// 
[HttpPost]
[使用(“应用程序/x-www-form-urlencoded”)]
公共IActionResult住宅([FromForm]字符串数据)
{
if(string.IsNullOrEmpty(data))返回BadRequest(“不存在数据”);
var model=JsonConvert.DeserializeObject(数据);
//-----从简洁中删除------//
返回Ok(true);
}
当我使用邮递员发送一些数据时,它总是空的


有人知道为什么会这样吗?

为发布的数据创建一个模型/DTO。net core应该处理绑定()

您似乎已经有了
WorldPayResponseModel
,为什么不绑定到它呢?例如:

public class WorldPayResponseModel
{
    public string CardType { get; set; } 
    public int CardId { get; set; } 
    // other properties
    ...
}

[HttpPost]
[Consumes("application/x-www-form-urlencoded")]
public IActionResult Residential([FromForm] WorldPayResponseModel model)
{
    if (model == null || !ModelState.IsValid) return BadRequest("No data was present");    

    // ----- removed from brevity ----- //

    return Ok(true);
}
您还可以向属性添加数据批注,然后在控制器中使用
ModelState.IsValid
。是一个有用的资源(它针对MVC/Razor页面,但模型验证仍然在API中工作)


您可能也可以安全地删除
[FromForm]

我做了相同的操作,但仍然在
CardType中获得
null