Domanda

Seguendo dal domanda precedente Ho iniziato a chiedermi: è possibile implementare "componenti" in ASP.NET MVC (ultima versione)? E dovresti?

Chiariamo cosa intendo con un "componente". Con ciò intendo un "controllo" (alias "widget"), simile a quelli su cui è costruito le forme Web ASP.NET. Una gridview potrebbe essere un buon esempio. In WebForms posso inserire nel mio modulo un componente DataSource (una riga di codice), un componente GridView (un'altra riga di codice) e legarli insieme (specificare un attributo su GridView). Nel file CodeBehind riempirò i dati di dati (alcune righe di codice DB-Querying) e sono tutto impostato.

A questo punto la gridview è un componente autonomo completamente funzionale. Posso aprire il modulo e vedrò tutti i dati. Posso ordinarlo facendo clic sulle intestazioni della colonna; È diviso in diverse pagine; Posso trascinare le intestazioni della colonna e riorganizzare le colonne; Posso accendere la modalità "raggruppamento"; ecc. E non ho bisogno di scrivere un'altra riga di codice per nulla di tutto ciò. Il Gridview, come componente, ha già tutto il codice nascosto nelle sue classi e assemblaggi. Lo metto solo sul modulo, lo inizializza e funziona. In alcune volte (come l'ordinamento o la navigazione in una pagina diversa) eseguirà anche callback AJAX sul server, ma anche quelli saranno gestiti internamente, con il mio codice che non ha alcuna conoscenza al riguardo. E poi ci sono anche eventi che posso allegare se voglio essere informato quando succede qualcosa.

In MVC non riesco a vedere un modo per farlo in modo pulito. Certo, ci sono le viste parziali, ma quelle gestiscono solo la metà del problema: rendono l'HTML iniziale. Alcuni altri possono essere raggiunti con JavaScript sul lato client (come il riorganizzazione della colonna), ma quando la griglia deve fare un callback Ajax (diciamo, per recuperare la pagina successiva di dati), il mio codice dovrà essere coinvolto ed elaborarlo richiesta. Nella migliore delle ipotesi immagino di poter fornire alcuni metodi di supporto per elaborarlo, ma dovrò scrivere il codice che li chiama e fornire anche un metodo del controller con firma corrispondente agli argomenti di quel callback.

Immagino di poter fare degli hack con eventi globali o percorsi speciali o qualcosa del genere, ma sembra ... hackish. Irregolare. Forse questo non è il modo MVC? Anche se ho completato un progetto, sono ancora lungi dall'essere un esperto di MVC. Ma allora cosa è? Nell'applicazione Intranet che stiamo costruendo ci sono dozzine su dozzine di tali griglie. Naturalmente voglio che tutti abbiano un aspetto e un comportamento unificato e non voglio ripetere lo stesso codice dappertutto.

Allora qual è l'approccio "MVC" a questo problema?

Nessuna soluzione corretta

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