Правильная разработка веб-приложений ASP.NET MVC - PullRequest
1 голос
/ 16 ноября 2011

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

Вопрос 1: Предположим, у меня есть несколько основных видов (MainView1, MainView2, ...) с некоторыми частичными видами (PartialView1, PartialView2,PartialView3, ...).Из того, что я понял о MVC, я должен определить модель для каждого представления.например, я должен определить PartialModel, PartialModel2, ..., а также определить мои основные модели, которые являются контейнерами частичных моделей, которые использовались в них:

public class MainModel1
{
    public PartialModel1 Partial1 {get;set}        
    public PartialModel2 Partial2 {get;set}
    public PartialModel3 Partial3 {get;set}
}

Таким образом, когда я хочучтобы перенаправить на MainView, я могу инициализировать модели, используемые в этом представлении, используя эту модель.Правильно ли мое понимание MVC?Или связь между представлениями и моделями должна быть в другой форме в MVC?

Вопрос 2 : Если вышеприведенное верно, то предположим, что у меня есть частичное представление на некоторых из моих основных страниц просмотра.Это частичное представление имеет кнопку отправки, которая вызывает метод действия.Этот метод действия должен как-то возвращать представление главной страницы с правильными моделями представления для представлений.Есть ли какие-либо рекомендации о том, как получить / установить модели представления других представлений в действии частичного представления?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Вы понимаете правильно.Каждое представление (независимо от того, является ли оно основным или частичным) должно иметь соответствующую модель представления (если, конечно, в очень редком случае, когда это представление содержит только статический HTML).И следуя этой логике, основной вид, который должен отображать другие частичные представления, будет иметь модель представления, которая сама будет иметь ссылку (возможно, как свойства) для просмотра моделей, которые требуются для этих частичных представлений.который использует помощник Html.Action.В этом случае партиал визуализируется через другой контроллер / действие, чем основной.Поэтому вам не нужно ссылаться на модель частичного представления в модели основного вида.Они будут совершенно разными.Посмотрите следующую запись в блоге , чтобы узнать больше о Html.Action.

1 голос
/ 16 ноября 2011

Ваше понимание совершенно нормально. Это то, что вы также можете обратиться к ViewModel в Asp.net MVC.

Итак, что в основном представляет модель Asp.net MVC ViewModel?

В ASP.NET MVC ViewModels позволяют формировать несколько объектов из одной или нескольких моделей данных или источников в один объект, оптимизированный для потребления и визуализации представлением. Изображение ниже иллюстрирует концепцию ViewModel:

enter image description here

Целью ViewModel является отображение представления для одного объекта, что устраняет необходимость в логическом коде пользовательского интерфейса в представлении, которое в противном случае было бы необходимо. Это означает, что единственная ответственность или забота представления состоит в том, чтобы визуализировать этот единственный объект ViewModel, помогая в более четком разделении интересов (SoC). Проблемы - это отдельные аспекты приложения, которые имеют определенную цель (то есть озабоченность), и разделение этих аспектов означает, что ваше приложение более организовано, а код более сфокусирован. Помещение кода манипулирования данными в его собственном месте, вдали от представления и контроллера, усиливает SoC.

Использование ViewModels в MVC для более тонкой детализации и улучшения SoC приводит к более легкому сопровождению и тестированию кода. Помните, что модульное тестирование - это тестирование небольших блоков.

Наряду с лучшими практиками кодирования, есть много бизнес-причин, демонстрирующих, почему вы можете рассмотреть возможность использования ViewModels:

  • Включение раскрывающихся списков данных поиска в связанный объект
  • Просмотр основных записей
  • Разбиение на страницы: объединение фактических данных и информации подкачки
  • Компоненты, такие как корзина для покупок или виджет профиля пользователя
  • Панели мониторинга с несколькими источниками разнородных данных
  • Отчеты, часто с агрегированными данными
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...