为什么当视图模型执行所有输入验证时,我仍然需要 asp.net MVC 中的业务模型



这不是视图模型与模型的问题!

这可能是典型的视图模型的属性:

    [Required]
    [StringLength(6, MinimumLength = 3)]
    [Remote("IsUID_Available", "Validation")]
    [RegularExpression(@"(S)+", ErrorMessage = "White space is not allowed.")]
    [Editable(true)]
    public String UserName {get;set;}

那么,除了将数据传输到数据访问层之外,我还需要我的模型吗?那么它就不是一种商业模式。它是一个数据访问对象:http://en.wikipedia.org/wiki/Data_transfer_object

如果您不遵循 MVC 或 MVVM。将所有属性废话放在模型上似乎是完全有效的。

但是当我们做UI模式时,使用模型进行输入验证总是不好的。

那似乎...

域模型通常是防止无政府状态的最后防线。这是您可以在不同的应用程序和视图之间重用的东西。它是您最宝贵的资产:域数据。如果您不对域模型进行验证,而仅依赖于视图模型,您可能会发现自己处于开发人员可以添加视图而不对视图模型执行任何验证的情况,并且会得到损坏的数据。当然,所有这些都依赖于一些较大的代码库,在这些代码库中,您可以重用大部分代码,并且您有多个开发人员同时在系统的不同层上工作。

如果您只是在构建一个小型应用程序,其中您的域没有任何重用,那么您可以不对其进行验证。

因此,恕我直言,这实际上取决于许多因素,例如您正在构建的系统的性质,其特定上下文和要求。

最新更新