![]() |
1
1
从MVP的角度来看(我相信它更适合WinForms),你的问题的答案是有争议的。然而,我理解的关键是,在任何时候你都应该能够改变你的观点。也就是说,我应该能够提供一个新的WinForms视图来显示您的应用程序,或者将它挂接到一个ASP.NET MVC前端。 一旦你意识到这一点,验证就变得很快了。应用程序本身(业务逻辑)应该抛出异常、处理错误等等。UI逻辑应该是哑的。换句话说,对于WinForms视图,应该确保字段不为空,以此类推。很多控件的属性都允许这样做-Visual Studio的属性面板。在GUI中对抛出异常之类的代码进行验证是一个大问题。如果要在视图和模型上都进行验证,则需要复制代码—您所需要的只是一些简单的验证,例如控件不是空的。让实际的应用程序本身执行实际的验证。
核心应用程序应该包含所有逻辑。指定的视图逻辑(WinForms属性、Javascript等等)应该是每个视图唯一的。在我看来,拥有每个视图必须验证的属性和接口是错误的。 |
![]() |
2
0
如果您的“视图将值公开为属性”,我怀疑您遗漏了一些内容。MVP/MVC与其他一些UI分离模式的主要区别在于,它们包括一个模型,该模型旨在成为视图、演示者或控制器共享数据的主要容器。 如果您将模型用作数据容器,那么验证的责任就变得非常明确。由于只有演示者(或控制器)实际上除了显示数据之外还执行其他操作,因此它负责验证数据是否处于其将要执行的操作的可接受状态。 在编辑期间将数据验证问题的可视指示器添加到编辑器窗体/窗口当然很好。然而,它应该被认为或多或少等同于视图“眼睛糖果”,并且应该被视为真实验证逻辑的附加组件(即使它基于共享元数据或代码)。演示者(或控制器)应保持数据有效性的真正权威,其验证代码不应托管在视图中。 |
![]() |
3
-1
我相信视图验证只与javascript相关,因为视图不会在post上运行任何代码,只有控制器会运行。
不过,视图可能有方法显示任何错误。 |
![]() |
Medet · 即使没有屏幕旋转,也保持ViewModel活动 7 年前 |
|
saradindu samal · 实现MVP设计模式的正确标准是什么 7 年前 |
![]() |
Sermilion · 安卓:MVP。组件间通信的正确方式 8 年前 |
|
tur · CachingActivityMapper有什么意义? 9 年前 |
![]() |
Jacob Phan · MVC模式。模型、视图和控制器之间的关系 10 年前 |
|
Lahey · MVP:被动视图(带EF)和图层 11 年前 |
![]() |
Milambardo · MVP演示者在回发后订阅了活动 12 年前 |