2009-02-04 14 views
2

Je suis curieux de connaître la situation dans laquelle vous avez un contrôle utilisateur que vous souhaitez réutiliser dans une application, mais vous avez également une page ou un autre contrôle qui nécessite également un présentateur.Dans le modèle Model View Presenter, un présentateur peut-il prendre et utiliser deux interfaces de vue différentes en même temps?

dire donc j'ai une vue de téléchargement et de contrôle

public partial class UploadControlView : System.Web.UI.UserControl, IUploadView 

mais j'ai aussi une vue page

public partial class ExcelProcessorView : System.Web.UI.Page, IExcelProcessorView 

Le contrôle de téléchargement serait sur la page ExcelProcessor, de sorte que l'utilisateur peut télécharger un fichier qui est transmis à une logique métier de traitement Excel.

J'ai un présentateur,

public class ExcelUploadAndProcessPresenter : IUploadPresenter 

Dans le ExcelProcessorView je câbler le présentateur comme suit:

protected void Page_Load(object sender, EventArgs e) 
    { 
     ExcelUploadAndProcessorPresenter presenter = 
      new ExcelUploadAndProcessorPresenter(this, uploadControl); 
     this.AttachPresenter(presenter); 
     uploadControl.AttachPresenter(presenter); 
     //init etc... 
    } 

Est-ce une utilisation correcte du motif MVP?

J'essaye de comprendre quelle est la meilleure pratique pour manipuler un grand nombre de vues à une relation de présentateur. MVP peut-il avoir une relation de plusieurs à un de cette manière. Comme une autre question, j'aimerais aussi savoir si le modèle MVP peut/devrait gérer une situation où vous avez beaucoup de présentateurs et de nombreux points de vue (ou si vous avez seulement un présentateur)?

Si vous voyez des problèmes avec mon interprétation de MVP en général, n'hésitez pas à le faire remarquer.

Merci d'avoir lu!

Répondre

2

Pouvez-vous expliquer davantage comment votre vue et votre contrôle utilisent la même logique? Je ne peux pas imaginer un scénario où j'aurais ce problème. Si la logique est distincte, je pense que vous utiliseriez deux présentateurs.

Cependant, il n'y a aucune raison qu'un présentateur ne puisse pas gérer plusieurs vues/contrôles, bien que je ne réutilise qu'un présentateur pour plusieurs vues qui affichent le même modèle (par exemple des écrans CRUD). Si une vue en héberge une autre provenant du même présentateur, je ne peux pas penser à une raison pour laquelle ne devrait pas réutiliser votre présentateur (par exemple Créer un écran en bas d'un écran Liste).

+1

Je ne suis pas. Pourriez-vous poster une modification avec un exemple de code? –