Ho una pagina Web Form ASP.NET che il presentatore deve compilare con i controlli. Questa interazione è alquanto sensibile al ciclo di vita della pagina e mi chiedevo se c'è un trucco, che non conosco.Disaccoppiamento della vista, presentazione e moduli Web ASP.NET
Voglio essere pratico per tutto ciò ma non compromettere la testabilità.
Attualmente ho questo:
public interface ISomeContract
{
void InstantiateIn(System.Web.UI.Control container);
}
Questo contratto ha una dipendenza System.Web.UI.Control e ho bisogno che, per essere in grado di fare le cose con il Web ASP.NET Forms modello di programmazione. Ma né la visualizzazione né il relatore possono avere conoscenze sui controlli del server ASP.NET.
Come aggirare questo? Come posso lavorare con il modello di programmazione Web Form ASP.NET nelle mie viste concrete senza utilizzare una dipendenza System.Web.UI.Control nei miei assembly del contratto?
Per chiarire un po ', questo tipo di interfaccia riguarda esclusivamente la composizione dell'interfaccia utente (utilizzando MEF). È conosciuto attraverso il framework, ma in realtà è chiamato solo all'interno della vista concreta. La vista concreta è ancora l'unica cosa che sa di Web Form ASP.NET. Tuttavia, quei metodi pubblici che dicono InstantiateIn(System.Web.UI.Control)
esistono nei miei assembly di contratto e ciò implica una dipendenza da Web Form di ASP.NET.
Ho pensato a qualche meccanismo di doppia spedizione o addirittura a un modello di visitatore per cercare di aggirare questo problema, ma non so ancora in quale direzione voglio andare e mi piacerebbe davvero un input sull'argomento.
Perché la visualizzazione e il relatore non possono conoscere i controlli server ASP.NET? –
@ Testabilità kirk? non sarà difficile (dannatamente vicino impossibile) deridere queste cose? –
Potresti rispondere http://stackoverflow.com/questions/8851933/event-bubbling-and-mvp-asp-net? – Lijo