Asp.net MVC中的数据传输对象

时间:2012-04-02 04:37:04

标签: c# asp.net-mvc asp.net-mvc-3 dto

我被分配到一个网站上工作,该网站使用MVC作为表示层并与WCF服务进行通信。两人使用DTO来回传递信息。

目前,在整个MVC部分(用户,地址,帐户信息)中使用DTO。例如,MVC中的User类有一个PersonDTO,其中包含有关用户的所有信息以及特定于Web的方法(登录):

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中的Controller Actions?

2 个答案:

答案 0 :(得分:2)

只有在添加了值时,我才会将我的DTO包装在另一个“ViewModel”类中。如果您的视图包含为视图提供动力所需的所有数据,那么我认为您的视图直接绑定到DTO时,我看不到问题。 “viewModel”有意义的一个示例是当您有其他UI问题时,例如将多个字段组合成一个等等。

答案 1 :(得分:1)

我通常发现DTO包含的数据超出了我的需要,或者数据不够。因此,我从服务中获取DTO,然后通过Automapper将它们映射到视图模型。