我几天来一直在寻找这个问题的答案,这让我感到疯狂。目前我正在使用ASP.NET MVC 3开发一个项目,我正在尝试使用每个控制器方法的ViewModel,正如我已经检查过的许多文章和教程所建议的那样。为了更好地说明我的要求,我将在下面概述:
让我们说我有一个非常简单直接的模型。用户,客户,地址,电话号码,订单,产品,类别等...当用户在我的网站上注册新帐户时,我想: 1)为他们创建一个帐户(这只是一个帐户ID,客户类型) 2)将他们的客户人口统计数据添加到客户 3)添加N地址和地址类型 4)添加类型的N电话号码。
据我所知,我决定需要一个RegisterCustomerForRegistrationControllerViewModel。我的困境是这个模型是什么样的?我想尽可能地干,但在实施这种模式时,我似乎每次都会重复自己。我在什么级别放置DataAnnotations进行验证?即使我只想在给定的ViewModel中使用该类中的一个属性,我也只是新建一个新的Customer()?
我在这一点上甚至不确定这是一个正确的假设。关于这个主题似乎有很多意见,但很少有具体的实施例子。我希望有人可以指出我正确的方向,并可能会提供一些代码片段...我希望这一切都很清楚,如果没有,请随时提出跟进问题。
再次,提前致谢!
答案 0 :(得分:4)
在应用程序的两个不同层中重复简单属性不会违反DRY。它的设计很棒。
DataAnnotations继续使用ViewModels。
ViewModel看起来像
public class RegisterCustomerViewModel
{
[Required]
public string Name { get; set; }
public List<AddressViewModels> Addresses { get; set; }
public List<PhoneNumberViewModel> PhoneNumbers { get; set; |
}
答案 1 :(得分:1)
就像jfar一样,我会采取一个简单的方法:一个视图,一个带有DataAnnotations的视图模型。
话虽如此......我知道你的感受(不自信),我理解,因为我自己也经历过这一切。我的结论:除非您认为您的Web应用程序需要这么多层,原则和模式的开销,否则请保持简单。我相信没有完美的建筑。有什么可行,有开销。有时候,有效的方法确实很复杂。问问自己是否需要这种复杂性。
把我的第一句话作为你问题的答案,其余的作为我的拙见。