Modèle MVP - Vue passive et exposition de types complexes via IView (Asp.Net, Web Forms)

StackOverflow https://stackoverflow.com/questions/153222

  •  03-07-2019
  •  | 
  •  

Question

Je suis récemment passé au modèle MVP avec une approche en vue passive. Je me sens très à l'aise lorsque l'interface de la vue n'expose que les types de clés de base, tels que les chaînes mappées sur des TextBox, IDictionary mappées sur DropDownLists, IEnumerable mappées sur certaines grilles, répéteurs.

Cependant, cette dernière approche ne fonctionne que lorsque, à partir de celles-ci, une seule colonne ne me concerne Comment mapper le contenu multiroues de la grille dans IView? Pour le moment, deux solutions me viennent à l’esprit, toutes deux peu brillantes:

  1. Créez un DTO pour le contenu de la grille et exposez le IEnumerable dans IView,   ou
  2. Exposer le IEnumerable ou juste la "grille" comme dans IView.

La première solution semble casser les règles de la vue passive tout en se rapprochant du motif Contrôleur de supervision et la seconde casse complètement le motif MVP. Comment géreriez-vous cela?

merci, & # 321; ukasz

Était-ce utile?

La solution

MVP facilite beaucoup le développement de formulaires Web, sauf dans des cas comme celui-ci. Cependant, si vous avez utilisé TDD pour vérifier que votre IView vraiment a besoin de cette grille de données, alors je ne vois pas vraiment quel est le problème.

Je suppose que vous essayez de faire quelque chose comme ceci:

public interface IView
{
 DataTable DataSource {get; set;}
}

public class View : IView {

private GridView _datasource;
public DataSource 
{
  get { return _datasource; }
  set 
  { 
    _datasource = value; 
    _datasource.DataBind(); 
  }
}

Utilisé avec le modèle MVP, je trouve ce petit modèle très utile.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top