Я боролся с этим в течение нескольких дней. Мне нужно заполнить выпадающий список с жанрами.MVC заполняет выпадающее меню с внешнего ключа
Мой MovieRepository захватить жанры:
public IQueryable<Movies> MoviesAndGenres
{
get { return db.Movies.Include(m => m.parentGenre); }
}
Мой фильм модель
public virtual Genres parentGenre { get; set; }
Жанр Модель:
public class Genres
{
public Genres()
{
this.movies = new HashSet<Movies>();
}
[Key]
public int genreId { get; set; }
[Required(ErrorMessage = "A genre name is required")]
[StringLength(25)]
public String genreName { get; set; }
public ICollection<Movies> movies { get; set; }
}
Я пытаюсь передать в жанрах с списке выбора , но я получаю LINQ to Entities не распознает метод System.String To String(), и этот метод не может быть переведены в сохраненное выражение.
Фильмы Controller, addMovie действие:
ViewBag.Genres = movieRepository.MoviesAndGenres.Select(m => new SelectListItem
{
Text = m.parentGenre.genreName,
Value = m.parentGenre.genreId.ToString()
}).ToList();
return View();
Вид:
@Html.DropDownListFor(m => m.parentGenre, (SelectList)ViewBag.Genres)
Любая помощь будет принята с благодарностью!
Update:
Repository:
public IQueryable<Genres> MoviesAndGenres
{
get { return db.Genres; }
}
Контроллер:
var x = movieRepository.MoviesAndGenres.Select(m => new
{
Text = m.genreName,
Value = m.genreId
});
ViewBag.Genres = new SelectList(x);
return View();
Вид:
@Html.DropDownListFor(m => m.parentGenre, (SelectList)ViewBag.Genres)
Это не сработает - Невозможно неявно преобразовать тип 'int' в 'string' – Andrew
Я получаю эту ошибку на мой взгляд: невозможно лить объект типа 'WhereSelectEnumerableIterator'2 [MovieRental.Models.Movies, System.Web. Mvc.SelectListItem] 'для ввода' System.Web.Mvc.SelectList '. – Andrew
Я изменил свое представление на код ниже, но мое раскрывающееся меню пусто. Я проверил базу данных и там есть записи. @ Html.DropDownListFor (m => m.parentGenre, (IEnumerable) ViewBag.Genres) –
Andrew