我可以在对象上使用属性并且仍然使用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函数中进行检查?还是我错过了其他最佳实践?
答案 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);
}
}