Там нет элемента viewdata типа ienumerable<selectlistitem>, который имеет ключ?
Привет Команда
Я использую DropDownlistFor для того, чтобы получить весь список доступных стран в мире. Теперь я получаю это исключение, говоря, что нет элемента ViewData IEnumerable. Этот тип создается только на моем контроллере, нужно ли мне создавать его на моем классе модели.
Что я уже пробовал:
private IEnumerable<SelectListItem> GetCountryList() { SelectList listcn = null; try { var list = this.LoadData().Select(p => new SelectListItem { Value = p.Country_Id.ToString(), Text = p.Country_Name }); listcn = new SelectList(list, "Value", "Text"); }catch(Exception ex) { // throw ex; } return listcn; }
private List<EditTrainingRegFormViewModel> LoadData() { List<EditTrainingRegFormViewModel> lst = new List<EditTrainingRegFormViewModel>(); try { string line = string.Empty; string srcFilePath = "Content/files/country_list.txt"; var rootPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase); var fullPath = Path.Combine(rootPath, srcFilePath); string filePath = new Uri(fullPath).LocalPath; StreamReader src = new StreamReader(new FileStream(filePath, FileMode.Open, FileAccess.Read)); // while to read the file while((line = src.ReadLine()) !=null) { EditTrainingRegFormViewModel infoLst = new EditTrainingRegFormViewModel(); string[] info = line.Split(','); //Setting infoLst.Country_Id = Convert.ToInt32(info[0].ToString()); infoLst.Country_Name = info[1].ToString(); lst.Add(infoLst); } src.Dispose(); src.Close(); }catch(Exception ex) { Console.Write(ex); } return lst; }
// Selection for countries in the world. public ActionResult DropDownSelect() { EditTrainingRegFormViewModel model = new EditTrainingRegFormViewModel(); model.SelectedCountryId = 0; this.ViewBag.CountryList = this.GetCountryList(); return this. View(model); }
@Html.DropDownListFor(m=>m.SelectedCountryId, this.ViewBag.CountryList as SelectList, new {@class = "form-control"})