I have a view with 1 drop-down list generated from the Model property, and three additional drop-down lists that are generated from the array property
@Html.DropDownListFor(m => m.AgentType, Model.AgentTypeListItems)
@for (int i = 0; i < Model.AgentTypes.Length; i++)
{
@Html.DropDownListFor(m => m.AgentTypes[i], Model.AgentTypeListItems)
}
The controller method initializes Collection AgentTypeListItems + sets the default values for the AgentType drop-down list and 3 drop-down lists for the collection:
var model = new OptionsViewModel();
model.AgentTypeListItems = new[]
{
new SelectListItem { Text = "1", Value = "1" },
new SelectListItem { Text = "2", Value = "2" },
new SelectListItem { Text = "3", Value = "3" },
};
model.AgentType = "2";
model.AgentTypes = new[] { "3", "2", "1" };
return View(model);
When I open it in the browser, I get "2" everywhere, although the AgentTypes array is initialized with different values (!):

When I replace DropDownListFor with TextBoxFor:
@Html.TextBoxFor(m => m.AgentTypes[i])
I get the correct values on the inputs (!):

This means that TextBoxFor works as expected, but DropDownListFor does not.
Is this a bug in MVC DropDownListFor?
UPDATE
Here is the model class:
public class OptionsViewModel
{
public SelectListItem[] AgentTypeListItems { get; set; }
public string AgentType { get; set; }
public string[] AgentTypes { get; set; }
}