JsonPatchDocument是否可以使用属性

时间:2019-10-23 11:27:42

标签: .net asp.net-core asp.net-core-webapi json-patch

我可以在对象上使用属性并且仍然使用JsonPatchDocument吗?

当前,如果我有此对象:

public class Test {
        public float FloatTest { get; set; }
}

我只能在请求后和补丁请求中以浮点数发送。

如果我添加属性:

public class Test {
        [Range(1, 100)]
        public float FloatTest { get; set; }
}

现在,在请求后,我只能发送1到100之间的浮点数。在补丁中,即使我用FloatTest = 1000进行补丁,ModelState仍然有效。

无论如何,是否需要在JasonPatchDocument的ApplyTo函数中进行检查?还是我错过了其他最佳实践?

1 个答案:

答案 0 :(得分:1)

使用TryValidateModel来验证您的数据,请参考以下代码:

[HttpPatch]
    public IActionResult JsonPatchWithModelState([FromBody] JsonPatchDocument<Test> patchDoc)
    {
        if (patchDoc != null)
        {
            var test = new Test();

            // Apply book to ModelState
            patchDoc.ApplyTo(test, ModelState);

            // Use this method to validate your data
            TryValidateModel(test);

            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }
            return new ObjectResult(test);
        }
        else
        {
            return BadRequest(ModelState);
        }
    }

结果: enter image description here