Markup o non markup...

rated by 0 users
This post has 6 Replies | 2 Followers

Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907
petrux Posted: 07-24-2009 11.41

Ciao a tutti,

 

ho uno dei miei soliti problemi di coscienza. ;-)

Sto sviluppando una piccola applicazione ASP.NET seguendo un pattern MVP con Passive View. Quello che mi chiedo è: la configurazione dei controlli va fatta nel markup delle pagine, nel code behind di ASP oppure nei presenter che controllano le pagine (cioè le view)?

 

Grazie,

Giulio

  • | Punteggio Post: 20
Top 10 Partecipanti
Post 143
Punteggio 2.560

Ciao,

petrux:

Sto sviluppando una piccola applicazione ASP.NET seguendo un pattern MVP con Passive View. Quello che mi chiedo è: la configurazione dei controlli va fatta nel markup delle pagine, nel code behind di ASP oppure nei presenter che controllano le pagine (cioè le view)?

io lo metterei tutta la vita nel markup. Uno degli obiettivi di questi pattern è quello di eliminare il code-behind

.m

  • | Punteggio Post: 20
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907

Ciao Mauro,

 

[quote user="Mauro Servienti [MVP]"]

io lo metterei tutta la vita nel markup. Uno degli obiettivi di questi pattern è quello di eliminare il code-behind

[/quote]

 

Ok. La prendo per buona e a partire da ora inizierò a fare così. :-)

Qualche dubbio comunque mi rimane, e te lo espongo:

- perché bisogna eliminare il code behind?

- e se volessi usare per alcuni controlli un object data source per cui gestire in maniera "custom" l'evento ObjectCreating?

- se si verifica un'eccezione nel codice generato al volo dal markup, come la gestisco? Esiste qualche "strategia" a riguardo?

 

Grazie,

Giulio

  • | Punteggio Post: 35
Top 10 Partecipanti
Maschio
Post 268
Punteggio 4.907

Ri-ciao,

 

Dimenticavo la domanda più importante:

4. usando una view puramente passiva, come definisco gli eventi che devono essere intercettati e gestiti dal presenter?

 

Ciao,

Giulio

  • | Punteggio Post: 20
Top 10 Partecipanti
Post 143
Punteggio 2.560

Ciao,

petrux:

Qualche dubbio comunque mi rimane, e te lo espongo:

- perché bisogna eliminare il code behind?



perchè se hai un tool che genera la UI, utilizzato magari da un designer non ha senso che lui debba scrivere codice, ha senso che lui debba solo disegnare, inoltre più codice hai nel code-behind e meno testabile è lo scenario.

petrux:

- e se volessi usare per alcuni controlli un object data source per cui gestire in maniera "custom" l'evento ObjectCreating?



Mai usato un ObjectDataSource, ma in generale l'unica cosa che devi fare è "rinculare" la richiesta verso il presenter

petrux:

- se si verifica un'eccezione nel codice generato al volo dal markup, come la gestisco? Esiste qualche "strategia" a riguardo?

 



perchè mai dovrebbe succedere? se è generato da un tool... è un problema del tool, se il tool è coperto da test il problema non si pone, se hai una exception avrai un macro handler che trappa il bug.

.m

  • | Punteggio Post: 5
Top 10 Partecipanti
Post 143
Punteggio 2.560

Ri-ciao anche a te :-)

petrux:

4. usando una view puramente passiva, come definisco gli eventi che devono essere intercettati e gestiti dal presenter?

Non ho capito la domanda. se è passiva in senso stretto non ha eventi, ma il presenter esporrà dei metodi che la view chiama, nulla di più.

Domanda: perchè vuoi una view passiva?

.m

  • | Punteggio Post: 5
Top 10 Partecipanti
Maschio
Post 243
Punteggio 3.383

Concordo con Mauro, anche io metterei il più possibile nel marckup.

petrux:
- perché bisogna eliminare il code behind?

PErchè diminuisci il numero di righe di codice scritte, ergo diminuisci il numero di bug che puoi introdurre nella applicazione. Se inizi a mettere codice dietro la UI inoltre rischi che ti ci vada a finire logica di business, per cui se fai tutto nel marckup non hai problemi.

petrux:
- e se volessi usare per alcuni controlli un object data source per cui gestire in maniera "custom" l'evento ObjectCreating?

Uso molto gli objectDataSource e ti do un consiglio. l'object data source non è il massimo, ma è un buon modo per mettere logica custom di ui fuori dalle pagine. Esempio, ho una serie di oggetti che rappresentano il mio dominio, debbo fare una pagina dove debbo fare vedere una lista che contiene un sommario di questi oggetti oltre a delle proprietà calcolate ad hoc per la view. Faccio un metodo nella parte di logica di UI che torna dei POCO direttamente bindabili alla UI. Non andare a gestire nessun evento dell'object data source, fai si che il tuo metodo chiamato contenga tutta la logica e nel marckup ci siano binding seplicissimi.

petrux:
- se si verifica un'eccezione nel codice generato al volo dal markup, come la gestisco? Esiste qualche "strategia" a riguardo?
7

Domanda strana cmq, in tutti i data source esiste la logica per gestire le eccezioni, ovvero quando un objectdatasource chiama un update se accadono delle eccezioni puoi gestire degli eventi specifici con cui ad esempio mostrare l'errore all'utente.

petrux:
usando una view puramente passiva, come definisco gli eventi che devono essere intercettati e gestiti dal presenter?

Concordo con Mauro, il presenter implementerà una data interfaccia che contiene tutti i metodi che possono essere chiamati dalla UI, non c'è bisogno di scomodare eventi.

Alk.

 

  • | Punteggio Post: 5
Pagina 1 di 1 (7 elementi) | RSS
Powered by Community Server (Commercial Edition), by Telligent Systems