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?

¿Fue útil?

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í.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top