Patrón MVP: vista pasiva y exposición de tipos complejos a través de IView (Asp.Net, Web Forms)

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

  •  03-07-2019
  •  | 
  •  

Pregunta

Recientemente he cambiado al patrón MVP con un enfoque de vista pasiva. Me parece muy cómodo trabajar con él cuando la interfaz de la vista solo expone los tipos básicos de clr, como cadenas asignadas a TextBoxes, IDictionary asignadas a DropDownLists, IEnumerable asignadas a algunas cuadrículas, repetidores.

Sin embargo, este último enfoque funciona solo cuando desde esa cuadrícula solo me importa una columna. ¿Cómo puedo mapear el contenido de múltiples filas de la red dentro de IView? Por ahora, se me ocurren dos soluciones, ambas no brillantes:

  1. Cree un DTO para el contenido de la cuadrícula y exponga el IEnumerable en IView,   o
  2. Exponga el IEnumerable o solo la " cuadrícula " tal como está en IView.

La primera solución parece romper las reglas de la Vista Pasiva a la vez que se acerca al patrón de Supervisión del Controlador y la segunda rompe todo el patrón de MVP. ¿Cómo manejarías esto?

gracias, & # 321; ukasz

¿Fue útil?

Solución

MVP facilita mucho el desarrollo de formularios web, excepto en casos como este. Sin embargo, si usó TDD para verificar que su IView realmente necesita esa cuadrícula de datos, entonces realmente no veo cuál es el problema.

Supongo que estás tratando de hacer algo como esto:

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

public class View : IView {

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

Cuando se usa con el patrón MVP, encuentro que este pequeño patrón es muy útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top