System.invalidoperationexception: 'нет элемента viewdata типа 'ienumerable<selectlistitem>', который имеет ключ 'listcountries.country'.'
Привет Команда
Я пытаюсь получить свой список стран с помощью dropdownlistFor, каждый раз, когда мое приложение загружается, оно выбрасывает это исключение и нуждается в некоторой помощи, чтобы решить его, но оно не сохраняется в моей базе данных.
Что я уже пробовал:
<pre>private List<RegistrationTrainingForm> LoadData() { List<RegistrationTrainingForm> lst = new List<RegistrationTrainingForm>(); 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) { RegistrationTrainingForm infoLst = new RegistrationTrainingForm(); 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; } // List for countries. 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; }
@using (Html.BeginForm("Index", "Home", FormMethod.Post)) { <div class="col-sm-3"> @Html.DropDownListFor(model=>model.ListCountries.Country, ViewBag.CountryList as SelectList) </div> }
Gerry Schmitz
Пришло время сделать несколько постоянных POCO's вместо того, чтобы придумывать имена на лету, такие как "Value" и "Text".