Как изменить значение в ModelState, чтобы оно было допустимым, используя ASP.NET MVC?

в настоящее время я разрешаю selectlist иметь начальное значение "". Пользователь может выбрать, следует ли заполнить эту опцию или оставить ее в значении по умолчанию.

этот список выбора работает с идентификатором, где идентификатор передается моему контроллеру. Однако, поскольку int не выбирается, ModelState приводит к False, поскольку вход был пустой строкой, а не int.

Я хочу изменить значение этой пустой строки на 0. Это приведет к ModelState будучи истинным. Я смотрел на класс словаря ModelState, чтобы я мог изменить пару ключ, значение перед проверкой ModelState. Однако я не смог использовать это successfully.
https://msdn.microsoft.com/en-us/library/system.web.mvc.modelstatedictionary(v=vs. 118).aspx

любая помощь была бы весьма признательна.

2 ответов


попробуйте использовать

ModelState.SetModelValue("PropertyID", new ValueProviderResult("New value", "", CultureInfo.InvariantCulture));

вот полезная статья.

http://geekswithblogs.net/BobHardister/archive/2013/03/11/retain-and-set-posted-checkbox-value-in-the-mvc-4.aspx


вы можете просто удалить ошибку

if (ModelState.ContainsKey("{key}"))
    ModelState["{key}"].Errors.Clear();

if (ModelState.IsValid)
{
}