Я пытаюсь адаптировать ответы для заполнения ListBoxFor, который имеет предварительно выбранные значения, которые я нашел здесь в SO, и у меня есть некоторые проблемы с адаптацией.Устранение неполадок и использование MultiSelectList/ListBoxFor в ASP.NET MVC 3
Это один из вопросов, который я ссылалась на: here
Вот мой класс, который определяет объект списка
public class SelectListDTO {
public int ID { get; set; }
public string Name { get; set; }
}
Я есть метод класса, который заполняет список Элементы SelectListDTO. CheckRefresh проверяет, истек ли кеш, если он пополняет кеш. Так что этот метод получает мой список:
private List<SelectListDTO> GetSelectList() {
CheckRefresh();
var lst = new List<SelectListDTO>(_cache.Count + 1);
_cache.ForEach(item => lst.Add(new SelectListDTO { ID = item.ID, Name = item.Name }));
return lst;
}
Моя модель определения этих свойств/методов:
public class MyModel {
[Required]
[Display(Name = "Program Type")]
[Min(1, ErrorMessage = "Please select a Program Type")]
public int[] SelectedProgramTypes { get; set; }
public MultiSelectList ProgramTypes { get; set; }
public MyModel() {
PopulateProgramTypeList();
}
private void PopulateProgramTypeList() {
// Get all available list items
var programTypes = ProgramTypeService.Instance.GetSelectList;
// how to fill multiselectlist with my List<SelectListDTO> items;
ProgramTypes = new MultiSelectList(??)
}
}
первая часть вопроса сверху здесь^Как заполнить MultiSlectList с моим Список Объекты SelectListDTO
Также в действии моего контроллера я получаю сохраненные элементы из БД и должен передать их в модель как SelectedProgramTypes. Это в настоящее время в моем действии:
public ActionResult Edit(int? id) {
// Code here to validate id and that user is associated with id
lenderProduct = new LenderProduct(id);
var model = BuildModel(lenderProduct); // returns instance or MyModel
var selectedProgramTypes = lenderProduct.ProgramTypes;
foreach (var item in selectedProgramTypes) {
/// How to fill the Model.SelectedProgramTypes array
}
return View(model);
}
второй части вопроса, как получить выбранные элементы, которые я читал из БД в массив, который может быть использован в MultiSelectList в модели
Мне кажется, что я это близко, но я пропустил какой-то шаблон или, надеюсь, только правильный синтаксис, чтобы заставить это работать таким образом, в отличие от способов, которые я видел здесь. Я еще не добрался до представления, но из того, что я видел, так же просто, как заполнить обычный DropDownList.
Thanks Darin! Я не получаю никаких проблем с компилятором, поэтому до завтра, когда я смогу проверить его на базе базы данных, я не буду знать окончательно, если это сработает, но оно идеально подходит для меня.Я знал, что это должно быть просто, но не сталкиваться с этой конкретной проблемой, прежде чем я не был уверен, как закончить ее. Спасибо за вашу помощь!! Кстати, это был второй вариант 2-й проблемы, которую вы предложили, которая соответствовала моим потребностям. LenderProduct.ProgramTypes действительно является списком типов программ, который является сложным типом, поэтому метод ToArray с идентификаторами работает отлично! –