5

在一个 asp.net 应用程序中,我想将 Webclient Software Factory (WCSF) 及其关联的 Model View Presenter 模式 (MVP) 的使用与 Page Method 结合起来,即 .aspx 视图上标有[WebMethod] 属性。

但是,aspx 页面上的静态方法似乎破坏了模型视图演示者模式,因为页面上需要一个实例方法来获得视图与之对话所需的演示者和控制器的上下文。

如何在 WCSF 中扩展 asp .net 的 MVP 模式以支持页面上的 [WebMethods],也就是视图?

4

2 回答 2

4

我最近在做一个 MVP 模式项目并想要大量 AJAX 集成时遇到了类似的问题。您最好拥有符合您所称的 MVP 模式的 Web 服务。

请记住,PageMethod 只是在当前页面中的 Web 服务。它无法访问任何页面级对象,因此拥有它的优势很小。我实际上认为它们是不利的,它们使开发人员(不熟悉该概念)认为他们可以与页面级对象进行交互。

硬币的另一面是您的 PageMethod 正在做的事情,如果您的页面方法不需要与模型交互(例如,它正在处理在 C#/VB.NET 中比 JS 更快的复杂算术计算),那么操作是真的是 UI 级别的操作,如果您要将应用程序变成 WinForm(或其他东西),则很可能无关紧要。

请记住,在 UI 级别与数据的所有交互都是特定于该 UI 实现的。如果您要为演示者编写不同的 UI,那么您可能会有不同的 UI 级别的数据交互。

于 2008-09-27T01:51:26.880 回答
2

我认为您可以通过使用 ASP.Net AJAX Web 服务而不是静态页面方法来接近您正在寻找的东西。Web 服务的优点是不是静态的,并且取决于您的视图是如何实现的,(我不熟悉 WCSF MVP 模式的细节)您可能会将 Web 服务设为您的“视图”层..或至少相当接近。

我在我正在做的一个项目中做过类似的事情。我最终需要创建一个精简的纯数据类,该类由 Web 服务序列化为 JSON,以将数据从模型传送到“视图”,但 Web 服务具有基本相同的方法,这些方法将作为事件公开风景。

我喜欢这种方法的一件事是,包括 Web 服务在内的所有位都是可测试的。

于 2008-09-27T01:12:58.173 回答