Я могу удалить все записи для списка, если знаю, какое начальное имя
, например
MyItems[0].Id
MyItems[0].Name
MyItems[1].Id
MyItems[1].Name
Статический помощник может использоваться следующим образом
ModelState.Remove_StartsWith("MyItems");
Хотя это также удалит все элементы с ошибками. Поскольку ключи ModelState имеют особую форму: name [n] .name - для удаления только одного элемента, соответствующего элементу модели, требуется не только найти этот элемент в ModelState, но и управлять индексными номерами ключей ModelState - возможно, создание нового ModelState с обновленным списком ключей в непрерывном порядке
/// <summary>
/// Remove all entries where a key starts with a given value
/// This will remove list entries
/// </summary>
/// <param name="dic"></param>
/// <param name="startsWith"></param>
static public void Remove_StartsWith(this ModelStateDictionary dic, string startsWith)
{
foreach (string key in dic.Keys.Where(k => k.StartsWith(startsWith)).ToList())
{
dic.Remove(key);
}
}