Если ключ не существует в ModelState, как я могу добавить его? aspnetmvc1

Я пытаюсь создать обходное решение в своем контроллере, который обрабатывает ошибку в ASP.NET MVC v1. Ошибка происходит при регистрации поля списка, которое ничего не имеет, выбрал (http://forums.asp.net/p/1384796/2940954.aspx).

Быстрое Объяснение: у Меня есть отчет, который принимает две даты от текстовых полей и один или несколько выборов от ListBox. Все работает за исключением проверки, если поле списка не оставляют ни с чем выбранным.

Когда форма отправляет и достигает моего контроллера, модель содержит все необходимые объекты. Однако ModelState не содержит ключ/значение для поля списка. Для разрешения я надеялся, что что-то вроде этого добьется цели:

if (!ModelState.ContainsKey("TurnTimeReportModel.Criteria.SelectedQueuesList") || ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"] == null) {
            ModelState.Keys.Add("TurnTimeReportModel.Criteria.SelectedQueuesList");
            ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"].Equals(new List());
        }

Unfortuantely, это выдает следующее исключение, когда я пытаюсь добавить ключ: Система. NotSupportedException: Видоизменение ключевого набора, полученного на основании словаря, не позволяется.

Какие-либо идеи?

Заранее спасибо!

5
задан PChristianFrost 1 March 2016 в 13:07
поделиться

2 ответа

Я закончил идти со следующим, который сделал трюк:

            if (ModelState.ContainsKey("TurnTimeReportModel.Criteria.SelectedQueuesList") && ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"] == null) {
            ModelState["TurnTimeReportModel.Criteria.SelectedQueuesList"].Value = new ValueProviderResult("", "", CultureInfo.CurrentUICulture);
        } else if (!ModelState.ContainsKey("TurnTimeReportModel.Criteria.SelectedQueuesList")) {
            ModelState.Add("TurnTimeReportModel.Criteria.SelectedQueuesList", new ModelState{Value = new ValueProviderResult("","",CultureInfo.CurrentUICulture)});
        }
2
ответ дан 14 December 2019 в 08:50
поделиться

Используйте метод ModelState.add напрямую:

ModelState.Add("TurnTimeReportModel.Criteria.SelectedQueuesList", 
               new ModelState{ AttemptedValue = new List<string>() } )
5
ответ дан 14 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: