c#应用程序的错误处理问题

c#应用程序的错误处理问题,c#,error-handling,mvp,C#,Error Handling,Mvp,我正在为我的网站实现bulltain board(或论坛),我正在使用c#和asp.net中的MVP模式以及类型化数据集连接到数据库。我的问题是,我不确定应该在哪里处理可能的错误并验证传入/传出数据。我提出了两种不同的解决方案: 解决方案1: 查看:什么都不做,只需将数据传递给演示者即可 演示者:与模型、数据库和视图相关的验证和错误处理 模型:什么都不做,只从数据库返回数据或错误 解决方案2: 视图:与页面和用户输入相关的验证和错误处理 演示者:什么都不做,只是做个调解人 模型:与数据库和模型相

我正在为我的网站实现bulltain board(或论坛),我正在使用c#和asp.net中的MVP模式以及类型化数据集连接到数据库。我的问题是,我不确定应该在哪里处理可能的错误并验证传入/传出数据。我提出了两种不同的解决方案:

解决方案1:

查看:
什么都不做,只需将数据传递给演示者即可

演示者:
与模型、数据库和视图相关的验证和错误处理

模型:
什么都不做,只从数据库返回数据或错误

解决方案2:

视图:
与页面和用户输入相关的验证和错误处理

演示者:
什么都不做,只是做个调解人

模型:
与数据库和模型相关的验证和错误处理`


那么,哪种解决方案更好呢?

视图:与页面和用户输入相关的验证和错误处理


这个。因为这对于简单(f.e输入错误)很重要,所以立即给用户反馈,而不是让他等待模型的响应

我绝对推荐解决方案2

在视图中尽可能多地进行验证,以便用户在发送数据后,大部分时间都可以期望交互成功。在应用程序中再次验证,以筛选出无效和/或被操纵的请求,并应用特定于域的规则


请记住,因为MVP是一种UI模式,所以模型只是演示者组装的数据容器。域模型、业务逻辑、数据库访问,因此最终验证应该位于应用程序本身基于MVP的UI层之下。

dennis感谢您的回答,但我不明白“最终验证应该位于应用程序本身基于MVP的UI层之下”这句话的意思。你的意思是我必须创建其他应用程序吗?MVP是用户界面层的一种模式。它与您的应用程序、域甚至数据访问层无关。MVP中的模型只是特定视图的模型。不是你的领域模型。我不是在创建分层应用程序,所以mvp就是应用程序。但是为什么mvp是一种UI模式呢??UI与连接到数据库的模型有什么关系?连接到数据库的模型与MVP中附带的“模型”无关。请参考Wikipedia作为了解什么是MVP和什么不是MVP的起点:dennis,你能帮我以正确的方式实现MVP吗