У меня есть метод ApiController, который принимает несколько параметров, например:
// POST api/files
public HttpResponseMessage UploadFile
(
FileDto fileDto,
int? existingFileId,
bool linkFromExistingFile,
Guid? previousTrackingId
)
{
if (!ModelState.IsValid)
return Request.CreateResponse(HttpStatusCode.BadRequest);
...
}
Когда я делаю POST для этого, я помещаю объект FileDto
в тело запроса, а другие параметры в строку запроса.
Я уже обнаружил, что я не могу просто опустить параметры, допускающие значение NULL, — мне нужно поместить их в строку запроса с пустым значением. Итак, мой запрос выглядит так, когда я не хочу указывать значение для параметров, допускающих значение NULL:
http://myserver/api/files?existingFileId=&linkFromExistingFile=true&previousTrackingId=
Это соответствует моему методу контроллера, и когда метод выполняется, параметры, допускающие значение NULL, действительно равны null
(как и следовало ожидать).
Однако вызов ModelState.IsValid
возвращает false
, и когда я просматриваю ошибки, он жалуется на оба параметра, допускающие значение NULL. (Другие биты модели не имеют ошибок). Сообщение:
Требуется значение, но его не было в запросе.
Почему он считает, что значение требуется/отсутствует? Наверняка (а) значение не требуется для значения, допускающего значение NULL, и (б) значение (вроде) присутствовало — нулевым способом?