我被分配到一个网站上工作,该网站使用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?
答案 0 :(得分:2)
只有在添加了值时,我才会将我的DTO包装在另一个“ViewModel”类中。如果您的视图包含为视图提供动力所需的所有数据,那么我认为您的视图直接绑定到DTO时,我看不到问题。 “viewModel”有意义的一个示例是当您有其他UI问题时,例如将多个字段组合成一个等等。
答案 1 :(得分:1)
我通常发现DTO包含的数据超出了我的需要,或者数据不够。因此,我从服务中获取DTO,然后通过Automapper将它们映射到视图模型。