0

我可以在我的对象上使用属性并仍然使用 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 函数中检查这一点,还是我错过了任何其他最佳实践?

4

1 回答 1

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);
        }
    }

结果 : 在此处输入图像描述

于 2019-10-24T08:52:25.540 回答