Здесь следует отметить пару вещей:
1) бессмысленно добавлять атрибут Required в типы значений.Типы значений должны всегда содержать значение, они не могут быть нулевыми .. поэтому Required всегда будет проходить для них.
В частности, DateTime является типом значения.Кроме того, ваш UrlParameter является int, который также является типом значения.он всегда будет содержать хотя бы значение по умолчанию.Required является избыточным.
2) Как уже говорили другие, ModelState устанавливается только во время привязки данных.привязка данных происходит только перед вызовом метода или при вызове UpdateModel или TryUpdateModel.Независимо от того, есть ли у вас другие ошибки, вы не можете обновить модель и ожидать, что ModelState отразит изменения, если вы не вызывали UpdateModel или TryUpdateModel.
3) Клиент установлен так, как требуется, но вы не 'Кажется, это настраивает.Поэтому, если вы установите Client и SearchSet, тогда выполните TryUpdateModel (search), это должно быть допустимо.
4) Талант работает, потому что, как и в Search, talent.Modified
и talent.Created
являются DateTime
s и неОбнуляемый, поэтому они никогда не пройдут проверку, даже если вы не установите значение (убедитесь сами, удалите назначение и посмотрите, как оно все еще проверяется).Любые другие обязательные поля, которые вы можете иметь в Talent, также могут быть типами значений.