У меня есть представление с 1 раскрывающимся списком, сгенерированным из свойства Model, и 3 дополнительными раскрывающимися списками, сгенерированными из свойства массива
@Html.DropDownListFor(m => m.AgentType, Model.AgentTypeListItems)
@for (int i = 0; i < Model.AgentTypes.Length; i++)
{
@Html.DropDownListFor(m => m.AgentTypes[i], Model.AgentTypeListItems)
}
Метод контроллера инициализирует коллекцию AgentTypeListItems + устанавливает значения по умолчанию для раскрывающегося списка AgentType и 3 раскрывающихся списка дляколлекция:
var model = new OptionsViewModel();
// for DropDownListFor
model.AgentTypeListItems = new[]
{
new SelectListItem { Text = "1", Value = "1" },
new SelectListItem { Text = "2", Value = "2" },
new SelectListItem { Text = "3", Value = "3" },
};
// 1 dropdown in the model
model.AgentType = "2";
// 3 dropdowns in array
model.AgentTypes = new[] { "3", "2", "1" };
return View(model);
Когда я открываю его в браузере, я получаю «2» везде, хотя массив AgentTypes был инициализирован с другими значениями (!):
![this is wrong](https://i.stack.imgur.com/2HSvi.png)
Когда я заменяю DropDownListFor на TextBoxFor:
@Html.TextBoxFor(m => m.AgentTypes[i])
Я получаю правильные значения во входных данных (!):
![this is how it should be](https://i.stack.imgur.com/hJbDQ.png)
Это означает, что TextBoxFor работает какожидается, но DropDownListFor нет.
Это ошибка в MVC DropDownListFor?
ОБНОВЛЕНИЕ Вот класс модели:
public class OptionsViewModel
{
public SelectListItem[] AgentTypeListItems { get; set; }
public string AgentType { get; set; }
public string[] AgentTypes { get; set; }
}