Uso de MVP: cómo utilizar eventos correctamente para realizar pruebas
-
09-06-2019 - |
Pregunta
Acabo de comenzar a usar el patrón MVP en la gran aplicación ASP.NET que estoy construyendo (en realidad, reconstruyendo) y me cuesta descubrir cómo debería usar los eventos aplicados a la vista.
Digamos que tengo 2 listas desplegables en un control de usuario, donde una depende del valor de la otra:
<%@ 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" />
¿Cómo se debe definir el evento AutoPostBack en la interfaz?¿Debería ser un evento manejado por el Control de usuario de esta manera?
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
¿O debería haber un evento definido en la interfaz?Si este es el patrón preferido, ¿cómo agrego eventos para manejarlos y usarlos?
Solución
No sé si existe un patrón universalmente preferido.Tiendo a preferir agregar el evento a la interfaz de vista y que el presentador responda a la vista.Describí este patrón en más detalles aquí.