ASP.NETCore如何部分绑定有效数据?
创始人
2024-09-18 05:30:46
0

ASP.NET Core提供了数据绑定功能来自动将请求参数绑定到相应的模型属性中。但是,如果请求中包含非法数据,绑定操作会失败并返回400错误。在某些情况下,我们希望能够部分绑定有效的数据并忽略无效数据,以便在模型验证之前处理数据并进行一些自定义逻辑。下面给出一个包含代码示例的解决方法。

首先,在Controller的Action方法中使用[FromBody]属性声明一个参数来接收Json请求体,并使用ModelStateDictionary对象手动执行部分验证和绑定操作。以下是示例代码:

[HttpPost]
public IActionResult PartialBinding([FromBody] JObject requestBody)
{
    var viewModel = new MyViewModel();

    //手动绑定ID属性
    if(requestBody.ContainsKey("id"))
    {
        if(int.TryParse(requestBody["id"].ToString(), out int id))
        {
            viewModel.ID = id;
        }
        else
        {
            ModelState.AddModelError("ID", "Invalid ID value");
        }
    }

    //手动绑定Name属性 
    if(requestBody.ContainsKey("name"))
    {
        viewModel.Name = requestBody["name"].ToString();
    }

    //手动验证模型
    if(!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    //进行自定义逻辑...

    return Ok(viewModel);
}

在上面的示例中,我们首先手动绑定ID和Name属性,并根据需要手动验证模型。 如果模型验证失败,则返回BadRequest请求。 如果模型验证成功,则可以在Action方法中进行任何自定义逻辑并返回200 OK响应。

需要注意的是,此方法需要手动绑定和验证每个需要绑定的属性,因此适用于只有少数需要绑定的属性的情况。 对于大型模型和需要绑定的大量属性的情况,应使用默认的数据绑定方式。

相关内容

热门资讯

透视辅助(aapoker外挂)... 透视辅助(aapoker外挂)菠萝德州偷偷看功能(详细辅助透视教程)切实是有挂;透视辅助(aapok...
透视透视(wepOke)透明挂... 1、透视透视(wepOke)透明挂辅助神器(wepoke有没有挂)往昔有挂(详细透视力荐教程)(UU...
微扑克辅助挂!wpk开挂实锤,... 微扑克辅助挂!wpk开挂实锤,(aa poker)果然真的有挂(详细透视透视教程);1分钟了解详细教...
透视科技(微扑克wpk透视辅助... 透视科技(微扑克wpk透视辅助)wepoke软件能玩吗(详细辅助2025新版总结)原来真的有挂是一款...
透视脚本(wepoKE)透视辅... 透视脚本(wepoKE)透视辅助代打(aapoker透明挂)总是真的有挂(详细透视AI教程);玩家必...
wepoke确实有挂!wepo... wepoke确实有挂!wepoke辅助软件下载,(WepoKe)确实有挂(详细辅助必胜教程);支持2...
透视模拟器(wepower有外... 透视模拟器(wepower有外挂)aapoker辅助工具(详细辅助技巧教程)其实存在有挂1、这是跨平...
aapoker透视辅助!微扑克... aapoker透视辅助!微扑克有假吗,(AApOKER)起初真的有挂(详细辅助系统教程);亲真的是有...
透视计算(WEPoke)透明挂... 1、透视计算(WEPoke)透明挂辅助软件(wepoke智能ai)其实是真的有挂(详细透视存在挂教程...
透视存在(德扑ai智能)德扑统... 透视存在(德扑ai智能)德扑统计软件(详细辅助科技教程)原本真的是有挂1、金币登录送、破产送、升级送...