Modello MVP - Visualizzazione passiva ed esposizione di tipi complessi tramite IView (Asp.Net, Web Forms)

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

  •  03-07-2019
  •  | 
  •  

Domanda

Di recente sono passato al modello MVP con un approccio Vista passiva. Mi sento molto a mio agio con cui lavorare quando l'interfaccia di visualizzazione espone solo tipi clr di base, come stringa mappata su TextBox, IDictionary mappata su DropDownLists, IEnumerable mappata su alcune griglie, ripetitori.

Tuttavia, quest'ultimo approccio funziona solo quando da quella griglia mi interessa solo una colonna. Come posso mappare il contenuto multirow della griglia all'interno di IView? Per ora, mi vengono in mente due soluzioni, entrambe non brillanti:

  1. Crea un DTO per il contenuto della griglia ed esponi l'IEnumerable in IView,   o
  2. Esporre IEnumerable o solo la " grid " come in IView.

La prima soluzione sembra infrangere le regole della Vista passiva mentre si avvicina al pattern Supervision Controller e in secondo luogo l'intero pattern MVP. Come gestiresti questo?

grazie, Lukasz

È stato utile?

Soluzione

MVP semplifica notevolmente lo sviluppo di moduli Web, tranne in casi come questo. Tuttavia, se hai usato TDD per verificare che il tuo IView abbia davvero bisogno di quella griglia di dati, allora non vedo davvero quale sia il problema.

Suppongo che tu stia provando a fare qualcosa del genere:

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

public class View : IView {

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

Se usato con il modello MVP, trovo che questo piccolo modello sia abbastanza utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top