Di seguito 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" (detto anche "widget"), simile a quelli su cui sono costruiti i Webform ASP.NET. Un gridview potrebbe essere un buon esempio. Nei webforms posso posizionare sul mio modulo un componente dell'origine dati (una riga di codice), un componente gridview (un'altra riga di codice) e unirli tra loro (specificare un attributo nella griglia). Nel file codebehind riempio l'origine dati con i dati (poche righe di codice di interrogazione DB) e sono tutto pronto.
A questo punto il gridview è un componente autonomo completamente funzionale. Posso aprire il modulo e vedrò tutti i dati. Posso ordinarlo facendo clic sulle intestazioni delle colonne; è diviso in diverse pagine; Posso trascinare le intestazioni delle colonne intorno e riordinare le colonne; Posso attivare la modalità "raggruppamento"; ecc. E non ho bisogno di scrivere un'altra riga di codice per nessuna di esse. Il gridview, come componente, ha già tutto il codice nascosto nelle sue classi e assiemi. L'ho appena inserito nel modulo, inizializzato e funziona. In alcuni momenti (come l'ordinamento o la navigazione in una pagina diversa) eseguirà anche callback sujax al server, ma anche quelli verranno gestiti internamente, con il mio codice che non ha alcuna conoscenza a riguardo. E poi ci sono anche eventi che posso allegare se voglio ricevere una notifica 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. È possibile ottenere un po 'di più con Javascript sul lato client (come la riorganizzazione delle colonne), ma quando la griglia deve eseguire una callback ajax (per esempio, per recuperare la pagina successiva di dati), il mio codice dovrà essere coinvolto e processare quello richiesta. Nella migliore delle ipotesi, credo di poter fornire alcuni metodi di supporto per elaborarlo, ma dovrò scrivere il codice che li chiama e fornire anche un metodo di controllo con la firma che corrisponde agli argomenti di tale callback.
Suppongo che potrei fare alcuni hack con eventi globali o percorsi speciali o qualcosa del genere, ma sembra proprio ... hackish. Unelegant. Forse questo non è il modo MVC? Anche se ho completato un progetto, sono ancora lontano dall'essere un esperto di MVC. Ma allora cos'è? Nell'applicazione intranet che stiamo costruendo ci sono dozzine di dozzine di tali griglie. Naturalmente voglio che tutti abbiano un aspetto e un aspetto unificato; comportamento, e non voglio ripetere lo stesso codice dappertutto.
Quindi qual è l'approccio "MVC" a questo problema?