我已经为此苦苦挣扎了好几天。我需要用流派填充下拉列表。
我的 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() 方法,并且此方法无法转换为存储的表达式。
电影控制器,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)
任何帮助将不胜感激!
更新:
存储库:
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)