2008-08-27 5 views
0

Ich habe gerade angefangen, das MVP-Muster in der großen ASP.NET-Anwendung zu verwenden, die ich gerade baue (und tatsächlich rebuild), und es fällt mir schwer herauszufinden, wie Ich sollte Ereignisse verwenden, die auf die Ansicht angewendet werden.Verwenden von MVP - So verwenden Sie Ereignisse zum Testen richtig

Say I 2 Dropdown-Listen in einem User Control habe, wo man auf dem Wert der anderen abhängig ist:

<%@ 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" /> 

Wie das Autopostback-Ereignis in der Schnittstelle definiert werden soll? Sollte es ein Ereignis sein, das durch den Benutzer Control wie folgt behandelt wird:

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 

Oder sollte es ein Ereignis an der Schnittstelle definiert werden? Wenn dies das bevorzugte Muster ist, wie füge ich Ereignisse hinzu, die verarbeitet und verwendet werden sollen?

Antwort

2

Ich weiß nicht, ob es ein universell bevorzugtes Muster gibt. Ich bevorzuge es, das Ereignis der Ansichtsschnittstelle hinzuzufügen und den Moderator auf die Ansicht reagieren zu lassen. Ich habe dieses Muster in more detail here beschrieben.