2017-02-09 3 views
0

Мне было интересно, если кто-нибудь когда-либо испытывал проблему, как в настоящее время.DropDownListFor проблемы

Контроллер:

_OpsAdminViewModel.userRoleID = _OpsAdminViewModel.retrieveHighestUserRoleGuidFromUserID(id.Value); 
_OpsAdminViewModel.ActiveRoleList = _OpsAdminViewModel.GetActiveRoles(); 
_OpsAdminViewModel.UserRoleSelectList = new SelectList(_OpsAdminViewModel.ActiveRoleList, "RoleID", "RoleName", _OpsAdminViewModel.userRoleID); 

Вид:

@Html.DropDownListFor(model=>model.selectedRoleID, Model.UserRoleSelectList) 

Теперь, вот, где она становится очень странно. Когда я помещаю перерыв в строке возврата контроллера или в строку View's DropDownListFor, я буквально вижу, что значение, которое я хочу выбрать, должно быть выбрано. Развернув объект UserRoleSelectList, вы увидите правильный идентификатор «SelectedValue» и в «представлении результатов» правильное значение имеет «True» для выбранного. Однако, когда страница отображается, выпадающее меню отображает элемент с 0 позициями в раскрывающемся меню.

ответ

0

Работа с привязкой к объекту путем привязки к стоимости вашего имущества. Когда вы используете DropDownListFor(), метод внутренне создает новый IEnumerable<SelectListItem> и устанавливает свойство Selected в зависимости от стоимости вашего имущества. В вашем случае значение selectedRoleID не соответствует значению одного из параметров, поэтому выбран первый параметр (потому что что-то должно быть).

Установите значение selectedRoleID в методе GET, прежде чем передать модель с точки зрения

model.selectedRoleID = _OpsAdminViewModel.userRoleID; 
return View(model); 

и удалить последний параметр в вашем SelectList конструктору, так как его бессмысленно.

+0

ЭТО БЫЛО ЛЕГКО !!! Я усложнил ситуацию, имея две разные свойства в моей модели (userRoleID и selectedRoleID). Теперь это исправлено. СПАСИБО!!! – Anonymous3521

Смежные вопросы