如何集成ASP .Net Model View Presenter(MVP)模式和标记为[WebMethod]的静态页面方法?

StackOverflow https://stackoverflow.com/questions/141104

  •  02-07-2019
  •  | 
  •  

在asp.net应用程序中,我想结合使用Webclient软件工厂(WCSF)及其相关的模型视图展示器模式(MVP)和页面方法,即.aspx视图上的静态方法标有[WebMethod]属性。

但是,aspx页面上的静态方法似乎会破坏Model View Presenter模式,因为页面上需要一个实例方法才能使View与之交互所需的Presenter和Controller上下文。

如何在WCSF中扩展asp .net的MVP模式以支持页面上的[WebMethods],又称View?

有帮助吗?

解决方案

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

请记住,PageMethod只不过是一个Web服务,就在当前页面中。它无法访问任何页面级对象,因此使用它的优势很小。我实际上认为它们是不合理的,它们给开发人员(他们不熟悉这个概念)提供了他们可以与页面级对象进行交互的想法。

硬币的另一面就是你的PageMethod正在做的事情,如果你的页面方法不需要与模型交互(比如,它处理复杂的算术计算,它在C#/ VB.NET中比JS更快)然后该操作实际上是一个UI级别的操作,如果你将应用程序变成一个WinForm(或其他东西),很可能是不可能的。

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

其他提示

我认为您可以通过使用ASP.Net AJAX Web服务而不是静态页面方法来接近您所寻找的内容。 Web服务的优势在于不是静态的,并且取决于您的视图的实现方式(我不熟悉WCSF MVP模式的细节),您可以使Web服务成为您的“查看”模式。 layer..or至少相当接近的东西。

我在一个正在研究的项目中做了类似的事情。我最终需要创建一个瘦数据类,它由Web服务序列化为JSON以将数据从模型传递到“视图”,但Web服务基本上具有与事件公开的方法相同在视图上。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top