C# 在web表单中实现MVP的困惑 问题:
在ASP.NET web表单的上下文中,我有两个页面:一个表单和一些数据的列表视图。这两个“视图”都需要有一个下拉列表,根据用户登录的内容加载数据(并非所有用户都能看到下拉列表中的所有数据)。在一种情况下,下拉列表用于选择元素,而在另一种情况下,下拉列表用于根据该元素过滤列表 构建这个场景最惯用的方式是什么 有人试图 我目前拥有的是:C# 在web表单中实现MVP的困惑 问题:,c#,asp.net,webforms,mvp,C#,Asp.net,Webforms,Mvp,在ASP.NET web表单的上下文中,我有两个页面:一个表单和一些数据的列表视图。这两个“视图”都需要有一个下拉列表,根据用户登录的内容加载数据(并非所有用户都能看到下拉列表中的所有数据)。在一种情况下,下拉列表用于选择元素,而在另一种情况下,下拉列表用于根据该元素过滤列表 构建这个场景最惯用的方式是什么 有人试图 我目前拥有的是: IAuthView=从ASP.NET页面提供会话令牌并允许演示者设置定义已登录用户的User属性的接口 AuthPresenter=获取会话令牌并设置签名用户
=从ASP.NET页面提供会话令牌并允许演示者设置定义已登录用户的IAuthView
属性的接口User
=获取会话令牌并设置签名用户AuthPresenter
=用户输入和提交事件的界面IFormView:IAuthView
=数据列表的接口IListView:IAuthView
=负责加载表单数据并在用户提交时从表单读取数据的类FormPresenter
=应用筛选器时负责加载数据列表并重新加载数据的类ListPresenter
=此视图描述具有下拉列表的视图IHasDropdownXView
=使用下拉列表填充视图,同时从AuthView实例获取签名用户HasDropdownXPresenter
=为其实现的每个视图界面加载所有三个演示者FormPage:IFormView,IHasDropdownXView
=为其实现的每个视图界面加载所有三个演示者ListPage:IListView,IHasDropdownXView
这一切似乎无缘无故地极其错综复杂。此外,我不清楚IHasDropdownXView应该如何获取签名用户,或者谁应该负责在最后一页中集合所有所需的演示者。我知道你说的是MVP,但是如果你让演示者创建ViewModels,让WebForm用ViewModel填充自己,设计和测试不是更容易吗?您仍然可以捕获演示者中的所有演示逻辑并对其进行单元测试。ViewModel可以定义为尽可能接近显示,这将使后面的代码非常精简,不值得测试。