Что такое модель в MVC. Должен ли я понимать это как отражение взгляда с точки зрения данных, содержащихся в нем? - PullRequest
2 голосов
/ 28 ноября 2011

Итак, модель следует рассматривать как отражение представления с точки зрения данных.Например, модель контактной формы будет выглядеть следующим образом: имя, адрес электронной почты, имя веб-сайта и описание?Это правильно концептуально?

Спасибо В.

Ответы [ 4 ]

4 голосов
/ 28 ноября 2011

То, что вы объяснили, это, по сути, ViewModel: модель, адаптированная к одному представлению.Но определение модели будет объектами, которые отправляют информацию в базу данных, выполняют бизнес-функции и являются просто представлением домена приложения .

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

Да, это один случай модели.Модель также может быть правилами бизнес-домена.

Из Википедия :

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

0 голосов
/ 28 ноября 2011

Да.

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

  • Модель представления - содержит модель данных, которые должны быть созданы, удалены, отредактированы или показаны в виде.

  • Модель сущности - содержит модель набора данных из источника данных, который должен быть создан, удален, отредактирован или показан в виде.

Как видите, в большинстве случаев это будет одно и то же. Есть ситуации, когда размышления о модели представления будут более осмысленными.

0 голосов
/ 28 ноября 2011

В общем да . Иногда это утомительно, но соотношение «вид» модели к соотношению 1: 1 работает очень хорошо и разделяет проблемы.

public class ContactFormViewModel
{
    public string Name { get; set; }
    public string Email { get; set; }
    public string WebsiteName { get; set; }
}

Если бы вы использовали встроенный каркас Visual Studio (, предполагающий версию 3 синтаксиса MVC и Razor ) для генерации представления, наследующего эту модель представления, это выглядело бы примерно так:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>ContactFormViewModel</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Name)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Name)
            @Html.ValidationMessageFor(model => model.Name)
        </div>
    ...

Это дает вам пару вещей:

  • Небольшой CSS-стиль (опять же, шаблонизация по умолчанию)
  • Валидация
  • 1 Модель для изменения при изменении логики формы контакта
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...