padrão MVP - Passive View e expondo tipos complexos através IView (Asp.Net, Web Forms)

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

  •  03-07-2019
  •  | 
  •  

Pergunta

Eu mudar recentemente para padrão MVP com uma abordagem passiva View. Eu me sinto muito confortável para trabalhar quando a interface expõe vista únicos tipos básicos clr, como string mapeados para TextBoxes, IDictionary mapeado para DropDownLists, IEnumerable mapeado para algumas redes, repetidores.

No entanto, esta última abordagem funciona somente quando daqueles grade eu me importo apenas cerca de um collumn. Como posso mapear o conteúdo multirow da grade dentro IView? Por enquanto, duas soluções vem à minha mente, tanto não é brilhante:

  1. Criar um DTO para o conteúdo da grade e expor o IEnumerable em IView, ou
  2. Expor o IEnumerable ou apenas o "grid" como é em IView.

Primeiro solução parece quebrar as regras passiva Visualização enquanto indo mais perto de Supervisão padrão Controlador e segundo rompe o padrão MVP todo em tudo. Como é que você lida com isso?

graças, Lukasz

Foi útil?

Solução

MVP torna o desenvolvimento webforms muito mais fácil, exceto em casos como este. No entanto, se você usou TDD para verificar se o IView realmente necessidades que grade de dados, então eu realmente não vejo qual é o problema.

Eu suponho que você está tentando fazer algo como isto:

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

public class View : IView {

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

Quando usado com o padrão MVP, acho que este padrão pouco para ser bastante útil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top