标签: mvp

我应该在 MVP(或 VM)中对我的视图进行单元测试,或者如何将视图中的代码保持在最低限度?

我在应用程序中使用模型-视图-表示模型,我想知道是否需要为视图创建单元测试。(我使用的是.net 2.0 WinForms)

现在,通常视图应该非常简单,以至于没有必要为其创建单元测试。至少这是我从视图与表示模型(PM)分离的目标中得到的想法。在大多数情况下,我的代码也是如此。

然而,在某些情况下,我似乎无法避免视图中的某些逻辑。这些通常与拖放处理或高级 UI 效果有关(想象一下您正在拖动网格行,数据网格显示占位符,其他行实时移动以指示您可以将其放置在那里)。

另一件事是,有时在我看来,使用控件本身比与 PM 一起工作并让数据绑定将更改反映回控件更有效。例如,我有一个数据网格,假设我将一行从索引 5 移动到 3。我可以调用 PM 上的方法,并让网格通过数据绑定反映更改。或者我可以直接在控制器上完成。不同之处在于,前一种方法强制控件从头开始重建自身,而后者则不然。

你有什么经历?

.net forms mvp unit-testing

3
推荐指数
1
解决办法
1095
查看次数

ASP.NET MVP模式

我正在尝试在我的应用程序中实现Model-View-Presenter设计模式.MVP模式的一般概念对我来说是已知的,但我更难以使用嵌套的用户控件来完成它.

我有一些可能的方案我可以实现,但在此之前,我想听听你的意见.

我认为发布我的任何代码并不重要,因为它更像是一个我试图理解的"概念".

所以场景是:

1页用于连接2个用户控件.其中一个用户控件包含一个子用户控件.在这种情况下,我如何解决MVP模式?

1 Page
  1 UC
  1 UC
     1 SubUC
Run Code Online (Sandbox Code Playgroud)

编辑:

基本上我想知道的是我们如何在两个用户控件中使用MVP在两个视图(父级和子级)之间进行交互.

我将在没有MVP的ASP.net中向您展示一个示例:http: //pastie.org/5452134

现在使用MVP,我们是否仍然使用CodeBehind注册此类事件?知道这个父和子用户控件都将使用MVP模式.或者演示者是否包含在此互动中?

最终我可以将代码更改为:http: //pastie.org/5452180

但考虑到MVP模式,我想知道这是否合适......

或者我们更需要这样的方法:http: //pastie.org/5452174

以上所有示例都是在父视图的CodeBehind中编写的.这是正确的吗?如果没有,我们如何使用更好的方法实现这一目标

编辑2:我已经在我的示例方法中添加了一个解决方案:https://github.com/frederikprijck/ASP.NET-MVP 我认为这应该是我想要的......

c# asp.net mvp design-patterns

3
推荐指数
1
解决办法
3248
查看次数

在gwt中使用html模板

我想使用这个外部HTML模板实现MVP gwt应用程序.

是否有可能创建HTML页面并在gwt项目中使用它们而不是在"view"类中编写java代码来生成HTML?

html mvp gwt gwt-mvp

3
推荐指数
1
解决办法
2593
查看次数

来自导致 System.ArgumentOutOfRangeException 错误的 ListItems 列表的 DataBinding asp.net DropDownList

我正在尝试使用 System.Web.UI.WebControls.ListItems 的 Collections.Generic.List 对 asp:DropDownList 进行数据绑定。DataBind() 抛出此错误。

System.ArgumentOutOfRangeException: 'ddlPlatinumOptions' 有一个无效的 SelectedValue,因为它不存在于项目列表中。

.ascx

<asp:DropDownList ID="ddlPlatinumOptions" runat="server" AutoPostBack="true" width="100%"></asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)

.ascx.cs

public void BindPlatinumOptions()
{
    ddlPlatinumOptions.DataTextField = "Text";
    ddlPlatinumOptions.DataValueField = "Value";
    ddlPlatinumOptions.DataSource = _platinumOptions;
    ddlPlatinumOptions.DataBind(); // Throwing Error
}
Run Code Online (Sandbox Code Playgroud)

主持人

MattressProtectionInfo standard = RF_ProtectionPlan.GetMattressPlanInfo(MattressId, false);
MattressProtectionInfo premium = RF_ProtectionPlan.GetMattressPlanInfo(MattressId, true);
List<ListItem> plans = new List<ListItem>();                  
if (standard != null)
{
    plans.Add(new ListItem(standard.Price.ToString("C") + " - Standard 5-Year Platinum Protection", standard.ProductID.ToString()));
}
if (premium != null)
{
    plans.Add(new ListItem(premium.Price.ToString("C") + " - Premium …
Run Code Online (Sandbox Code Playgroud)

c# asp.net mvp system.web.ui.webcontrols

3
推荐指数
1
解决办法
2050
查看次数

带有监听器绑定的 Android DataBinding 表达式

我在应用程序中使用遵循MVP模式的 Android 数据绑定库。谈话中,有以下与事件处理程序一起使用的表达式示例:

\n\n
<Button android:onClick="@{isAdult ? handlers.adultClick : handlers.childClick}" \xe2\x80\xa6/>\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有什么方法可以不使用方法引用而是使用侦听器绑定来具有相同的功能(即根据条件不同的“onClick”事件)?或者也许我的方法完全错误,逻辑应该转移给演示者?

\n

mvp android android-databinding

3
推荐指数
1
解决办法
564
查看次数

MVC vs MVP vs MVVM 用例

我是 android 开发人员,我在我的应用程序中研究了所有这三种架构模式。此外,我已经阅读了有关 stackoverflow 的几篇关于每个帖子的差异的帖子。我的理解可能不是 100% 正确,但这是我到目前为止所知道的。

  1. MVC - 控制器接收用户输入。控制器更新模型然后告诉视图更新自身。

  2. MVP - View 获取用户输入并通知 Presenter。Presenter 从 Model 中获取数据,然后将其发送到 View。Presenter 和 View 是一对一的关系。

  3. MVVM - View 接收用户输入。ViewModel 从 Model 生成数据并输出数据流,任何订阅它的 View 都可以使用该数据。View 和 ViewModel 是一对多的关系。

问题是在面试中很多次我都被问到这个问题来告诉我什么时候使用哪种模式。我认为面试官想知道的是应用程序的类型(如银行、电子商务等)及其适当的架构模式。或者至少对为什么我想在一个应用程序中使用 MCV 而在另一个应用程序中使用 MVP 以及 MVVM 的一些具体解释。

我做了很好的研究,但在互联网上找不到任何关于每种模式用例的正确答案。因此,请告诉我每个用例的用例。

architecture model-view-controller mvp android mvvm

3
推荐指数
1
解决办法
3697
查看次数

为什么要在 VBA 类模块中声明新类型?

我想遵循 Mathieu Guindon在这个优秀答案中描述的 MVP Userform 架构。但是,我不明白为什么在 FilterModel 类模块以及 FilterForm Userform 模块中,在类中创建了新类型,然后将其元素重新声明为类的属性。为什么这是必要的?为什么不将 SelectedFilter 声明为字符串类型的属性?我错过了什么吗?

mvp vba types module class

3
推荐指数
1
解决办法
101
查看次数

我可以说MVP = 3级Archi?

从最近几天开始,我一直在寻找新的Web应用程序的最佳架构,这将使用C#在ASP.Net中开发.到现在为止,我只发现并研究了3

  • 三层体系结构(注意:按层,我的意思是逻辑层)
  • 模型视图控制器(MVC)
  • 模型视图演示者(MVP)

现在,我的问题是:

1)据我所知3 Tier Architecture和MVP我可以说MVP和3 Tier是一回事吗?如果没有,那么两者之间有什么区别?(注意:我只发现MVC和MVP或MVC和3 Tier Archi之间的区别,但没有人能够解决MVP和3 Tier Archi之间的差异)

2)我只发现了以上三种架构选项,还有其他选择吗?(注意:这里我只想要Web应用程序整体架构的选项,如上面的3)

architecture asp.net mvp three-tier web-architecture

2
推荐指数
1
解决办法
2299
查看次数

我们可以使用MVC或MVP创建WPF应用程序吗?

在一次采访中,我被问到一个问题,我们可以使用MVC或MVP设计模式或实践来创建WPF应用程序.我说MVC或MVP是一种开发松散耦合应用程序的设计模式.我们将根据给定的场景,上下文,技术和应用平台使用MVC,MVP或MVVM.

如果我们可以使用MVC或MVP创建WPF应用程序,如果您有任何代码或PoC形式的好例子,那么请分享或解释.

windows wpf model-view-controller mvp

2
推荐指数
1
解决办法
9553
查看次数

如何使用Vaadin + Spring创建MVP架构?

我想创建以下简单的MVP架构:

  • 查看类似于vaadin布局,组件和样式的类.非功能性.该意见应与当前ViewScope/SessionScope,所以我使用@UIScopehttps://github.com/peholmst/vaadin4spring

  • 演示者应该注入视图,在视图组件上注册侦听器,处理用户输入并委托给模型服务

问题:当我将视图注入演示者时,视图会重新创建,因此演示者和视图不在同一范围内.所以绑定不起作用.我可以改变什么来实现上述设计?

@VaadinComponent
@UIScope
public class LoginView {
    //form fields, buttons
}

@Controller
public class LoginPresenter implements ClickListener {
    @Autowired
    private LoginView view;

    @PostConstruct
    public void bind() {
        view.getLoginButton().addClickListener(this);
    }   

    @Override
    public void buttonClick(ClickEvent event) {
        //validate input and login
    }   
}
Run Code Online (Sandbox Code Playgroud)

mvp spring vaadin spring-boot vaadin4spring

2
推荐指数
1
解决办法
4978
查看次数