gpt4 book ai didi

asp.net-mvc-3 - MVC 从外键填充下拉列表

转载 作者:行者123 更新时间:2023-12-04 05:05:16 26 4
gpt4 key购买 nike

我已经为此苦苦挣扎了好几天。我需要用流派填充下拉列表。

我的 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 ,添加电影 Action :
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; }
}

Controller :
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)    

最佳答案

由于您无论如何都要检索所有记录,因此您可以这样做。

ViewBag.Genres = movieRepository.MoviesAndGenres.AsEnumerable()
.Select(m => new SelectListItem
{
Text = m.parentGenre.genreName,
Value = m.parentGenre.genreId.ToString()
});

您还需要将 View 更改为:
@Html.DropDownListFor(m => m.parentGenre, new SelectList(ViewBag.Genres))

实际上,更好的方法可能是这样,因为它只检索您需要的特定列:
var x = movieRepository.MoviesAndGenres.Select(m => new 
{
Text = m.parentGenre.genreName,
Value = m.parentGenre.genreId
});

ViewBag.Genres = new SelectList(x)

此外,不再需要 ToList(),因为它已经处于即时状态。

关于asp.net-mvc-3 - MVC 从外键填充下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15589507/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com