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响应。

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

相关内容

热门资讯

二分钟了解!七彩全民雀神辅助,... 二分钟了解!七彩全民雀神辅助,牵手跑得快透视器,可靠教程(有挂揭秘)1、该软件可以轻松地帮助玩家将牵...
8分钟了解!欢乐达人辅助器,浩... 8分钟了解!欢乐达人辅助器,浩瀚麻将平台是不是会作假,曝光教程(有挂介绍)1、构建自己的浩瀚麻将平台...
五分钟了解!星悦福建麻将到底有... 五分钟了解!星悦福建麻将到底有没有挂,欢喜麻将app,攻略方法(有挂详情)1、进入游戏-大厅左侧-新...
3分钟了解!闲逸游戏有控制牌的... 3分钟了解!闲逸游戏有控制牌的软件吗,决战卡五星辅助器,2025新版总结(有挂软件)1、打开软件启动...
八分钟了解!广西星悦字牌有外 ... 八分钟了解!广西星悦字牌有外 挂么,闽悦麻将是不是有挂,分享教程(有挂攻略);1.广西星悦字牌有外 ...
九分钟了解!老友漳州麻将有挂吗... 九分钟了解!老友漳州麻将有挂吗,福建天天开心王国辅助器,AI教程(有挂详情)1、点击下载安装,福建天...
七分钟了解!大宝苏北麻将挂,闽... 七分钟了解!大宝苏北麻将挂,闽游十三水辅助教程,线上教程(有挂机密);1、闽游十三水辅助教程系统规律...
4分钟了解!青龙大厅辅助器,闲... 4分钟了解!青龙大厅辅助器,闲逸麻将真的有挂吗,揭秘教程(有挂辅助)该软件可以轻松地帮助玩家将闲逸麻...
十分钟了解!陕西欢喜有外 挂吗... 十分钟了解!陕西欢喜有外 挂吗,渝都麻将有没有挂,黑科技教程(有挂实操);所有人都在同一条线上,像星...
八分钟了解!广东雀神吗辅助软件... 八分钟了解!广东雀神吗辅助软件,越乡游双扣有挂吗,透明挂教程(有挂脚本)1、每一步都需要思考,不同水...