Внимательно изучив мой код, я теперь понимаю, что происходит. OrganizationFormModelView - это сериализуемый класс, и вот его определение.
[Serializable]
public class OrganizationFormViewModel
{
public Organization Organization { get; set; }
[NonSerialized]
public SelectList ParentOrgList = null;
public OrganizationFormViewModel(Organization organization, SelectList cList)
{
Organization = organization ?? new Organization();
ParentOrgList = pList;
}
}
Исходя из этого, я пришел к выводу, что после каждого процесса сериализации ParentOrgList устанавливается равным нулю, поэтому мне нужно найти способ переназначения ему значения. Итак, ниже то, что я сделал:
public ActionResult CreateOrganization(string nextButton)
{
//Omitted for brievety
if (formViewModel.ParentOrgList == null)
formViewModel.ParentOrgList = repository.CommuneList;
//Omitted for brievety
}
Я также изменил представление так, что, даже если значение ParentOrgList непрерывно переустанавливается, но DropDownList сохраняет выбор пользователя. Поэтому я выбираю перегрузку Helper со значением по умолчанию.
...
<% = Html.DropDownList("Organization.ParentOrganization", Model.ParentOrgList,
Model.Organization.ParentOrganization)%>
...
Теперь все работает отлично.
Однако, если кто-то знает, как поступить по-другому с бизнесом сериализации, было бы полезно поделиться.
Спасибо