Как правило, вы не хотите отключать проверку на стороне сервера или удалять ошибки ModelState вручную.Это выполнимо, но подвержено ошибкам, поскольку должно полагаться на строки в качестве ключей.Я проголосовал за ответ о том, как убрать ключи, потому что он правильный и полезный, но я рекомендую не превращать себя в случай, когда вы должны строго его рассмотреть.
В вашем случае у вас есть несколько кнопок отправки длята же форма, но вы действительно не отправляете форму при загрузке изображения.Чтобы предотвратить проверку на стороне клиента, вы можете использовать класс «отмена», как вы уже указали, но я также рекомендую иметь 2-ю кнопку отправки в другой форме, и в этом случае она не вызывает проверки в основной форме.
Есть еще одно преимущество использования другой формы: вы можете отправить ее другому методу ActionResult, который бы просто обрабатывал логику загрузки изображения.Этот другой метод просто не потрудился бы проверить свойство IsValid состояния модели: он заботится только о том, есть ли на изображении информация, и это можно проверить отдельно.(Даже если вы используете тот же метод ActionResult, вы можете направить логику так, чтобы вы не полагались на свойство IsValid состояния модели.)
Если необходимо удалить ошибки из состояния модели, иимеет смысл очистить все из них, попробуйте это:
foreach (var key in ModelState.Keys)
{
ModelState[key].Errors.Clear();
}
Это удерживает вас от зависимости от правильности имен ключей, но сохраняет значения, если какие-либо значения (действительные или недействительные) уже существуют в модели.
Последнее, что нужно проверить в этих случаях, - есть ли у вас значения, которые только иногда отображаются в представлении, что не приведет к проверке на стороне клиента (их нет в представлении), но приведет к результату.в вопросах проверки на стороне сервера.В этом случае лучше использовать @ Html.HiddenFor (model => model.PropertyName), если вы можете, предполагая, что значение уже установлено, оно просто не отображается в этом представлении.