Исключить "значение 'null' недопустимо для..." в ActionFilterAttribute
В проекте webapi у нас есть такая модель:
public class Person
{
public string Name { get; set; }
public Guid? Id { get; set; }
}
Мы настроили проверку параметров и делаем некоторые проверки, используя ActionFilterAttribute:
public class ModelActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
(...)
var modelState = actionContext.ModelState;
if (modelState.IsValid == false)
{
actionContext.Response = actionContext.Request.CreateErrorResponse(HttpStatusCode.BadRequest, modelState);
}
base.OnActionExecuting(actionContext);
}
}
Проблема заключается в том, что при выполнении вызова, такого как: https://localhost/person?Id=null&name='John', создается ошибка вроде:
The value 'null' is not valid for Id.
Во-первых, мы сделали поле Id обнуляемым, потому что хотим разрешить вызовы, подобные приведенному выше. Тем не менее, валидатор жалуется. Есть ли какой-нибудь чистый способ исключить эту ошибку?
Я мог бы пройтись по списку ошибок и исключить этот, но это действительно неправильно.
1 ответ
Вы можете определить модель для конкретной цели. Например:
public class PersonSearchParameters
{
public string Name { get; set; }
public string Id { get; set; }
}
Затем позвольте вашему методу обработать разбор Id
так, как вы бы предпочли.
Я действительно думаю, что будет проще, если вы просто скажете, что id
следует исключить из ваших результатов, если вы хотите, чтобы он был нулевым.