我目前正在学习ASP.NET MVC,所以请原谅我的问题,如果它被问到或者看起来相当简单,但如果我能得到一些帮助,我会非常感激。
我正在尝试将两个不同的存储库返回到View。我正在阅读ASP.NET MVC的教程,我想我会尝试更进一步。我可以在数据库中的电影表中显示电影,但我也希望同样显示Actors表中的数据,我不知道如何去做。为了显示我遵循存储库模式的电影。
我希望这是有道理的。
谢谢,
答案 0 :(得分:10)
创建一个同时包含电影和演员列表的新类:
public class MoviesAndActorsModel
{
public IList<Movie> Movies { get; set; }
public IList<Actor> Actors { get; set; }
}
然后,在您的控制器操作中,实例化从您的存储库填充的MoviesAndActorsModel类型的对象:
public ActionResult List()
{
MoviesAndActorsModel model = new MoviesAndActorsModel();
model.Movies = _repository.GetMovies();
model.Actors = _repository.GetActors();
return View(model);
}
现在确保您的视图继承自ViewPage <MoviesAndActorsModel>
,您应该能够同时访问电影和演员:
<% foreach (Movie movie in Model.Movies) { %>
<%= movie.Title %>
<% } %>
<% foreach (Actor actor in Model.Actors) { %>
<%= actor.Name %>
<% } %>
答案 1 :(得分:2)
ViewData["Movies"] = //Function to get Movies;
ViewData["Actors"] = //Function to get Actors;
return View();
这就是我在我的应用中所做的将多组数据传递给View。
编辑:
或者,如果您在数据库中设置了关系,则可以执行以下操作:
var movies = /*Function to get Movies*/ as Movies;
movies.Actors.Load();
假设您在表中设置了foriegn键,那将完成同样的事情。
然后在你看来你会这样做:
<%
var movies = ViewData["Movies"] as Movies;
var actors = ViewData["Actors"] as Actors;
%>
答案 2 :(得分:0)
有一个tutorial on http://asp.net/mvc,它演示了dhulk针对稍微不同的问题的解决方案的变体:如何从每个操作方法返回每个视图(例如,通过母版页)使用的一些公共数据而没有很多重复的代码。
本教程介绍了一个所谓的应用程序控制器(只是所有控制器的基类),它处理将公共/共享数据返回到视图。