在一个控制器中使用两个型号?

Ron*_*lor 2 c# asp.net-mvc-4 entity-framework-5

我目前有一个带有主页的应用程序,该主页根据它们"创建"的日期显示十个电影的列表,或者输入到数据库中.我还想根据每部电影的评级显示前十部电影的列表.有没有办法传入另一个模型或改变我当前的ViewModel来做到这一点?这是我的家庭控制器的索引部分:

    public ActionResult Index()
    {
        var model =
            _db.Movies
                .OrderByDescending(m => m.DateEntered)
                .Take(10)
                .Select(m => new MovieListViewModel 
                {
                    Id = m.Id,
                    Title = m.Title,
                    Genre = m.Genre,
                    ReleaseDate =  m.ReleaseDate,
                    CountOfReviews = m.Reviews.Count()
                });

        return View(model);

    }
Run Code Online (Sandbox Code Playgroud)

传入的ViewModel:

public class MovieListViewModel
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Genre { get; set; }

    [Display(Name="Year Released")]
    public DateTime ReleaseDate { get; set; }
    public int CountOfReviews { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Mat*_*ser 7

创建一个包含两个列表的模型:

public class MovieListViewModel
{
  public List<MovieModel> Top10ByCreated { get; set; }
  public List<MovieModel> Top10ByRating { get; set; }
}

public class MovieModel
{
  public int Id { get; set; }
  public string Title { get; set; }
  public string Genre { get; set; }

  [Display(Name="Year Released")]
  public DateTime ReleaseDate { get; set; }
  public int CountOfReviews { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中:

var model = new MovieListViewModel();

model.Top10ByCreated = ...
model.Top10ByRating = ...

return View(model);
Run Code Online (Sandbox Code Playgroud)

在您的视图中,使用MovieListViewModel您的模型并根据需要使用您的两个列表.