Выбранное значение из выпадающего списка не работает с ViewBags

#c# #.net #razor #html-helper #html.dropdownlistfor

#c# #.net #razor #html-помощник #html.dropdownlistfor

Вопрос:

Я использую выпадающий список, заполненный из ViewBag. Имя модели и имена ViewBag разные, и я использую специальный идентификатор для сценария.

 @foreach (var address in Model.CustomerAddresses){
 <div id="div_@address.Id">
   @Html.DropDownListFor(model => address.AddressType, ViewBag.AddressTypeList as IEnumerable<SelectListItem>, "Select a Type", new { @class = "form-control", id = "type_"   @address.Id })
 </div>
 

при повторном открытии модального параметра редактирования выбранное значение не выбирается в выпадающем списке. Пакет просмотра создается из перечисления.

—- Отредактировано ——

вот как создается viewbag,

 SelectList addressTypes = new SelectList(Data.GetAdressType());
ViewBag.AddressTypeList = addressTypes;
 

функция,

 List<string> type = Enum.GetNames(typeof(WebApp.Common.Utils.Meta.Constants.AddressType)).ToList();
type.Sort();
return type;
 

перечисление,

 public enum AddressType
    {
        Permanent = 1,
        Residence = 2,
        Office = 3,
        Other = 5
    }
 

Заранее спасибо

Комментарии:

1. Можете ли вы опубликовать, как заполняется ViewBag?

2. @BviLLe_Kid Я отредактировал вопрос с помощью функций

3. Проверьте, является ли viewbag значением при повторном открытии модального.

4. @PraveenKumar.erakkingal все данные отображаются как ожидалось, но для выбранного атрибута не установлен необходимый параметр

5. @PankajaG SelectList имеет перегруженный метод SelectList Constructor (IEnumerable, Object) .. у вас уже есть IEnumerabe с Data.GetAdressType() .. теперь вам просто нужно поместить объект в качестве значения, которое вы хотите выбрать… SelectList addressTypes = new SelectList(Data.GetAdressType(), /*object here*/);

Ответ №1:

Вы пытались создать свой список вместо использования ключевого слова «as» и интерфейса IEnumerable, подобного этому?

 (List<SelectListItem>)ViewBag.AddressTypeList
 

Или, может быть, используя другие способы, например, класс SelectList