Я только начал использовать шаблон MVP в большом приложении ASP.NET, которое я создаю (фактически перестраивая), и мне трудно понять, как мне следует использовать события, применяемые к представлению.
Скажем, у меня есть 2 раскрывающихся списка в пользовательском элементе управления, один из которых зависит от значения другого:
<%@ 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" />
Как должно быть определено событие AutoPostBack в интерфейсе? Если это событие обрабатывается пользовательским элементом управления следующим образом:
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
Или в интерфейсе должно быть определено событие? Если это предпочтительный шаблон, как мне добавить события для обработки и использования?





Я не знаю, есть ли универсально предпочтительный шаблон. Я предпочитаю добавлять событие в интерфейс представления и чтобы докладчик отвечал на представление. Я описал этот паттерн в подробнее здесь.