Есть ли способ переопределить ModelState.IsValid
?
Некоторые из объектов, подлежащих проверке, являются просто прикрепленными объектами, поэтому все поля, кроме идентификатора, не подлежат проверке, поскольку объект находится в состоянии Unchanged
.
Есть ли способ сделать это?
Кто-нибудь уже сталкивался с этой проблемой?
Обновить
Скажем, у меня есть следующее действие:
[HttpPost]
public ActionResult SaveEntity(MyEntity entity)
{
var isValid = ModelState.IsValid; //false
}
Поскольку модель проверяет все свойства и все свойства потомков entity
, должен быть способ проверить каждую сущность этих потомков, привязана ли она к контексту, и если да, удалить ошибку из ModelState
, что-то вроде следующего:
public ActionResult TryValidateDetachedModel(MyEntity entity, DbContext context)
{
foreach (var ms in ModelState.Where(ms => ms.Value.Errors.Any()).ToArray())
// should iterate over something like GetAllEntityTypesMetadata()
{
var entity = GetEntityFromMetadata(ms);
if (context.Entry(entity).State == EntityState.Unchanged)
{
ms.Value.Errors.Clear();
}
}
}
Что я пытаюсь сделать в приведенном выше псевдокоде, так это проверить объекты в цепочке проверки, и если один из них прикреплен как Unchanged
, пропустить проверку/удалить его ошибки.
Прямо сейчас я должен сделать это жестко закодированным вручную, проверив ModelState.Key
, я ищу более общий и эффективный способ.
DbContext
, чтобы увидеть, какие сущности присоединены какUnchanged
, и пропустить проверку/удаление ошибок для них? - person Shimmy Weitzhandler   schedule 14.07.2013ModelBinder
, который проверяет состояние и игнорирует проверку, когда объект не изменяется, но я не совсем уверен, о чем вы просите. - person LukLed   schedule 14.07.2013