ASP.NET MVC - возврат двух репозиториев в представление - PullRequest
4 голосов
/ 26 февраля 2009

В настоящее время я изучаю ASP.NET MVC, поэтому, пожалуйста, извините мой вопрос, если он был задан или кажется довольно простым, но если бы я мог получить некоторую помощь, я был бы очень признателен.

Я пытаюсь вернуть два разных хранилища в View. Я изучаю учебные пособия по ASP.NET MVC, и я подумал, что постараюсь сделать это еще дальше. Я могу отображать фильмы из таблицы Movie в базе данных очень хорошо, но я также хочу отображать данные из таблицы Actors на том же уровне, и я не уверен, как это сделать. Для отображения фильмов я следовал шаблону репозитория.

Надеюсь, это имеет смысл.

Спасибо,

Ответы [ 3 ]

10 голосов
/ 26 февраля 2009

Создайте новый класс, в котором есть список фильмов и актеров:

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 %>
<% } %>
2 голосов
/ 26 февраля 2009
ViewData["Movies"] = //Function to get Movies;
ViewData["Actors"] = //Function to get Actors;

return View();

Это то, что я делаю в своем приложении, чтобы передать несколько наборов данных в View.

EDIT:

Или, если в вашей базе данных установлены отношения, вы можете сделать что-то вроде:

var movies = /*Function to get Movies*/ as Movies;
movies.Actors.Load();

Это выполнит то же самое, если в ваших таблицах установлены внешние ключи.

И тогда, по вашему мнению, вы сделаете:

<%
   var movies = ViewData["Movies"] as Movies;
   var actors = ViewData["Actors"] as Actors;
%>
0 голосов
/ 27 октября 2009

Существует учебник по http://asp.net/mvc,, который демонстрирует вариацию решения dhulk ​​для немного другой проблемы: как вернуть некоторые общие данные, которые используются каждым представлением (например, главной страницей) из каждого метода действия без с большим количеством дублированного кода.

В учебном пособии представлен так называемый прикладной контроллер (просто базовый класс для всех контроллеров), который обрабатывает возврат общих / общих данных в представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...