2012-04-02 5 views
2

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

В настоящее время DTO используются во всей части MVC (Пользователь, Адрес, Информация об учетной записи). Например, класс пользователя в 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

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

1

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

Смежные вопросы