C# 在web表单中实现MVP的困惑 问题:

C# 在web表单中实现MVP的困惑 问题:,c#,asp.net,webforms,mvp,C#,Asp.net,Webforms,Mvp,在ASP.NET web表单的上下文中,我有两个页面:一个表单和一些数据的列表视图。这两个“视图”都需要有一个下拉列表,根据用户登录的内容加载数据(并非所有用户都能看到下拉列表中的所有数据)。在一种情况下,下拉列表用于选择元素,而在另一种情况下,下拉列表用于根据该元素过滤列表 构建这个场景最惯用的方式是什么 有人试图 我目前拥有的是: IAuthView=从ASP.NET页面提供会话令牌并允许演示者设置定义已登录用户的User属性的接口 AuthPresenter=获取会话令牌并设置签名用户

在ASP.NET web表单的上下文中,我有两个页面:一个表单和一些数据的列表视图。这两个“视图”都需要有一个下拉列表,根据用户登录的内容加载数据(并非所有用户都能看到下拉列表中的所有数据)。在一种情况下,下拉列表用于选择元素,而在另一种情况下,下拉列表用于根据该元素过滤列表

构建这个场景最惯用的方式是什么

有人试图 我目前拥有的是:

  • IAuthView
    =从ASP.NET页面提供会话令牌并允许演示者设置定义已登录用户的
    User
    属性的接口
  • AuthPresenter
    =获取会话令牌并设置签名用户
  • IFormView:IAuthView
    =用户输入和提交事件的界面
  • IListView:IAuthView
    =数据列表的接口
  • FormPresenter
    =负责加载表单数据并在用户提交时从表单读取数据的类
  • ListPresenter
    =应用筛选器时负责加载数据列表并重新加载数据的类
  • IHasDropdownXView
    =此视图描述具有下拉列表的视图
  • HasDropdownXPresenter
    =使用下拉列表填充视图,同时从AuthView实例获取签名用户
  • FormPage:IFormView,IHasDropdownXView
    =为其实现的每个视图界面加载所有三个演示者
  • ListPage:IListView,IHasDropdownXView
    =为其实现的每个视图界面加载所有三个演示者

这一切似乎无缘无故地极其错综复杂。此外,我不清楚IHasDropdownXView应该如何获取签名用户,或者谁应该负责在最后一页中集合所有所需的演示者。

我知道你说的是MVP,但是如果你让演示者创建ViewModels,让WebForm用ViewModel填充自己,设计和测试不是更容易吗?您仍然可以捕获演示者中的所有演示逻辑并对其进行单元测试。ViewModel可以定义为尽可能接近显示,这将使后面的代码非常精简,不值得测试。