Объединение нескольких выходов в одном представлении в asp.net MVC - PullRequest
2 голосов
/ 17 июня 2009

Я хочу использовать asp.net MVC для нового проекта. Я посмотрел на различные примеры на asp.net и в Интернете. Я до сих пор не получил ответа на вопрос, как лучше объединить вывод различных моделей в одно представление. Например, моя домашняя страница будет содержать категории, местоположения, снимки последних сообщений. Это будет три разных модели. Могу ли я создать единые viewdata со всем, что есть в нем, и создавать помехи внутри представления, чтобы разместить содержимое соответствующим образом?

Ответы [ 3 ]

8 голосов
/ 17 июня 2009

Вы создаете ViewModel для своей домашней страницы ... что-то вроде ...

public class MyHomepageViewModel
{
    public Categories MyCategories { get; set; }
    public Locations MyLocations { get; set; }
    public Snapshots MySnapshots { get; set; }

    public MyHomepageViewModel(Categories categories, Locations locations, Snapshots snapshots)
    {
        MyCategories = categories;
        MyLocations = locations;
        MySnapshots = snapshots;
    }
}

и затем вы строго введете свою домашнюю страницу для этой модели представления, и у вас будет доступ ко всему, что вам нужно в вашем представлении =)

3 голосов
/ 17 июня 2009

Вам нужна модель для просмотра:

public class HomeViewModel {
    public IList<Category> Categories;
    public IList<Location> Locations;
    public IList<Snapshot> Snapshots;
    public IList<Post> Recent;
}

Ваше мнение должно быть строго напечатано:

<%@ Page Inherits="System.Web.Mvc.ViewPage<HomeViewModel>" %>

<!-- <% var categories = Model.Categories %> -->
0 голосов
/ 17 июня 2009

Я обычно создаю один класс модели представления, который объединяет несколько классов модели данных в этом сценарии.

Я считаю, что представление и данные должны быть двумя различными наборами объектов, потому что иногда вам нужно выполнить преобразование данных (например, форматирование десятичного числа из класса модели данных в строку в формате валюты в модели представления) в классе контроллера до того, как отправлено на просмотр.

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