Utilisation de MVP - Comment utiliser correctement les événements pour les tests
-
09-06-2019 - |
Question
Je viens de commencer à utiliser le modèle MVP dans la grande application ASP.NET que je construis (en fait, je reconstruis) et j'ai du mal à comprendre comment utiliser les événements appliqués à la vue.
Supposons que j'ai 2 listes déroulantes dans un contrôle utilisateur, dont l'une dépend de la valeur de l'autre :
<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="ucTestMVP.ascx.vb" Inherits=".ucTestMVP" %>
<asp:DropDownList ID="ddlCountry" runat="server" AutoPostBack="True" />
<asp:DropDownList ID="ddlCity" runat="server" />
Comment l’événement AutoPostBack doit-il être défini dans l’interface ?S'il s'agit d'un événement géré par le contrôle utilisateur comme ceci :
Public Partial Class ucTestMVP
Inherits System.Web.UI.UserControl
Implements ITestMVPView
Protected Sub PageLoad(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
Dim presenter As New TestMVPPresenter(Me)
presenter.InitView()
End If
End Sub
Private Sub ddlCountrySelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlCountry.SelectedIndexChanged
Dim presenter as New TestMVPPresenter(Me)
presenter.CountryDDLIndexChanged()
End Sub
End Class
Ou faut-il qu'un événement soit défini au niveau de l'interface ?S'il s'agit du modèle préféré, comment puis-je ajouter des événements à gérer et à utiliser ?
La solution
Je ne sais pas s'il existe un modèle universellement préféré.J'ai tendance à préférer ajouter l'événement à l'interface d'affichage et demander au présentateur de répondre à la vue.J'ai décrit ce modèle dans plus de détails ici.