输出集合表单查询对应的ICollection dropdownlist方法

Output ICollection dropdownlist method corresponding to collection form query

我有 2 个模型(电影和演员)

我已经可以检索包含 selected 演员的电影列表。我可以通过 Html.DisplayNameFor 输出所有这些。但我想使用 DDL 来输出 Icollection Actors,而不是循环使用 @Html.DisplayNameFor(model => model.Actors) 中的子项。所以我需要dropdownlist对应于SelectedList Actor。默认输出是 all/ 并且如果我 select 特定的电影参数,例如 Genre 或 Budget 比 DDL with Actors 应该对应于此。

public class Movie
{
    public int MovieID { get; set; }
    public string Title { get; set; }
    public string  Date { get; set; }
    public int Budget { get; set; }
    public string  Genre { get; set; }
    public virtual ICollection<Actor> Actors { get; set; }
}

public class Actor
{  
    public int ID { get; set;}
    public string Name { get; set; }
    public virtual ICollection<Movie> Movies { get; set; }
}

我用

实现输出
   <th>
        @Html.DisplayNameFor(model => model.Genre)
    </th>........................

    <th>.........................
        @Html.DisplayNameFor(model => model.Actors)
    </th>...............

对于 Actors 集合,我需要为输出的每一行使用另一种形式。因为每一部电影都可以有很多演员。 如果 Actors 有很多列,我该如何隐藏它?或者输出一些具有扩展能力的数量? 我选择将它们添加到 DropDownList。 也许一些新的 AJAX 形式或 asp.net 元素是不错的选择。

因此我有 MovieController:

if (!String.IsNullOrEmpty(SearchActor))
{             
    Movie = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor)));
}

return View(Movie.ToList());

它returns一部电影。如何从对应于 Actor ICollection 的 Movie 中检索 Actors.Name(字符串)?

我会将此字符串添加到 DDL。

试试这个

var actors = Movie.Where(c => c.Actors.Any(i => i.Name.Contains(SearchActor))).SelectMany(i => i.Actors);