gpt4 book ai didi

asp.net-mvc - 在 ASP.NET MVC 中同时使用域对象和 View 模型时避免验证逻辑重复的良好做法

转载 作者:行者123 更新时间:2023-12-04 15:37:56 25 4
gpt4 key购买 nike

常见场景:

分层域模型被映射到平面 View 模型以进行演示。

我在我的域中有一个完整的验证设置,并且希望避免将 View 模型映射到域对象只是为了发现某些属性无效。我也不想在我的 View 模型中复制我的验证逻辑。

这里有什么好的做法?

我反对 View 模型和域对象的接口(interface),因为 View 模型通常是细线和扁平的,而域对象通常是嵌套的并且具有许多其他数据类型的属性。

我正在考虑一些可插入的验证器,它足够聪明,可以验证域对象和 View 模型,但对实现有点怀疑。

但为简单起见,我倾向于这种方法:

服务器端验证仅发生在域模型中; View 模型未经过验证,但数据在客户端上使用 JavaScript 进行验证。所以在大多数情况下,我的 View 模型将是有效的,并且验证逻辑将保留在一个地方,并且只会出现在域模型中。这种方法有一个缺点,asp.net mvc 2 验证将无法支持它。
你怎么看?

谢谢。

最佳答案

Microsoft Enterprise Library 提供了这样一个基于泛型的“可插入验证”库(如果有内存的话)。

我不喜欢它的工作方式,更不用说对其他 EL 组件的依赖数量,但它仍然值得一看。

我绝不是该领域的专家,但我坚信数据应该在您想要对其进行操作之前进行验证,并且始终在提交到您的存储库之前进行验证。因此,验证逻辑的最佳位置是业务逻辑层。客户端验证,虽然让用户满意,但让代码维护成为一场噩梦,并导致代码重复,这可能会导致进一步的问题。

在我看来,您的演示对象应该是 DTO。当用户将数据提交回您的 Controller (和 BLL)时,您可以使用解析器将表示对象转换为可以验证的业务对象。

我建议阅读 Rudy Lacovara 的博客(又名 The Angry .NET Developer)。他是一个非常谦虚的家伙,在这样的事情上有很多好话要说。

高温高压

关于asp.net-mvc - 在 ASP.NET MVC 中同时使用域对象和 View 模型时避免验证逻辑重复的良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2081728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com