Объекты передачи данных в Asp.net MVC - PullRequest
2 голосов
/ 02 апреля 2012

Мне поручили работать на сайте, который использует MVC для уровня представления и который общается со службой WCF. Оба используют DTO для передачи информации туда и обратно.

В настоящее время DTO используются во всей части MVC (Пользователь, Адрес, Информация об учетной записи). Например, класс User в MVC имеет PersonDTO, который содержит всю информацию о пользователе, а также методы, специфичные для сети (Логин):

public class User
{
    public PersonDTO Person { get; set; }
    public void Login { /* Login */ }
}

Таким образом, чтобы получить имя пользователя, вы должны сделать:

var CurrentUser = new User();
var firstName = CurrentUser.Person.First;

Есть ли лучший способ сделать это? (Похоже, это должен быть CurrentUser.First)

Кроме словесности, есть ли подводные камни в этом?

Должны ли DTO перетекать в действия контроллера в MVC?

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Я помещаю свои DTO в дополнительный класс ViewModel, только если есть добавленная стоимость. Я не вижу проблемы с привязкой ваших представлений непосредственно к вашим DTO, если они содержат все данные, необходимые для обеспечения представлений. Примером, когда «viewModel» имеет смысл, является ситуация, когда у вас есть дополнительные проблемы с пользовательским интерфейсом, такие как объединение нескольких полей в одно и т. Д.

1 голос
/ 02 апреля 2012

Я обычно нахожу, что DTO содержат больше данных, чем мне нужно, или недостаточно данных.Из-за этого я получаю свои DTO из сервиса и затем сопоставляю их через Automapper с моделями представления.

...