我有一个GET端点,它接受查询中的几个参数和一个字典。当在FromQuery中使用字典时,ASP.Net核心Web API ModelState未验证
public IActionResult Get([FromQuery] RequiredFields required, [FromQuery] Dictionary<string, string> parameters)
RequiredFields是需要的已知字段的类型化类。 “参数”是可选参数的字典,可选参数根据RequiredFields中的值进行选择。例如,如果RequiredFields.Type等于Foo,那么参数必须包含“x”和“y”键。
问题是ModelState.IsValid始终为false,没有错误。当我检查ModelState.Root时,未验证的子项是Dictionary中不存在于RequiredFields对象中的键。
这是一个错误还是有我需要做的手动验证字典中的键和值对?
我试过的一些东西。
1)我试着添加一个自定义的ValidationAttribute,但没有因为某种原因而被调用。
2)我结束了使用ModelState.ErrorCount> 0而不是IsValid,但似乎并不正确。
我试过了,我似乎无法传入参数查询字符串变量,该变量反序列化为字典<字符串,字符串>。这很简单,因为带有JSON数据的POST很简单,但对于GET,除非我编写自定义的ModelBinder,否则它似乎不受支持。 –