将路由参数映射到asp.net核心中的模型



我有一个带有以下注释的操作,

[HttpGet("update/{hash}")]
public async Task<IActionResult> Update([FromQuery]Model model)
{
// I need to use from model.Hash
return Ok();
}

此外,我有一个简单的模型如下:

public class Model
{
public string Hash { get; set; }
}

模型绑定器不起作用,因为很明显,散列不是像queryString那样的?hash=[value],这是一个id。

我不能使用另一个参数来绑定它,比如:

public async Task<IActionResult> Update(string hash)

因为我的模型有一个验证器。

有没有任何方法可以将hash绑定到hash我的属性?

您可以使用[FromRoute(Name = "hash")]将路由参数绑定到模型属性,如下所示。

public class Model
{
[FromRoute(Name = "hash")]
public string Hash { get; set; }
}

请参阅此Microsoft文档

最新更新