Выпадающий список не может привязать/отобразить выбранное значение модели при соединении через Viewbag

У меня есть следующий код в контроллере:

 ViewBag.CategoryName = new SelectList(catList, "key", "value");

где catList - это словарь, в котором ключ имеет тип string, а значение имеет строку типа. Этот словарь заполнен правильно и содержит фактические значения (подтвержденные и проверенные).

На мой взгляд, у меня есть следующая строка кода:

 @Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.CategoryName)

Но когда я запускаю страницу по какой-либо причине, фактическое значение для названия категории модели не выбрано в раскрывающемся списке. Может ли кто-нибудь сказать мне, в чем проблема? Моя модель определенно имеет название категории, и это имя находится в списке значений для раскрывающегося списка. Случай персонажа тот же ...

0
nl ja de
Не используйте ViewBag ! Используйте viewModel со свойствами для SelectList и SelectedItem .
добавлено автор Forty-Two, источник

1 ответы

По-видимому, проблема здесь в том, что имя объекта ViewBag не может быть таким же, как имя свойства модели. В моем случае я назвал свойство и экземпляр Viewbag как CategoryName. Когда я меняю код на:

 ViewBag.Categories = new SelectList(catList, "key", "value");

а также

 @Html.DropDownListFor(model => model.CategoryName, (SelectList)ViewBag.Categories)

it works just fine. I'm not sure exactly why is this, probably has something to do with the model binding dictionary but this is the reason for sure. Can anyone explain what is actually happening behind the curtain here а также why is this naming a problem?

0
добавлено