私はこれに数日間苦労しています。ドロップダウンリストにジャンルを入力する必要があります。
ジャンルをつかむための私の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 toEntitiesがSystem.StringToString()メソッドを認識せず、このメソッドを保存された式に変換できません。
ムービーコントローラー、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)