È possibile / dovresti sviluppare componenti per ASP.NET MVC?

4

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?

    
posta Vilx- 19.03.2012 - 16:52
fonte

3 risposte

2

Sì, è possibile creare widget riutilizzabili che funzionano bene con ASP.NET MVC. Ad esempio, Telerik ha due suite di controllo "mirate" allo sviluppatore ASP.NET MVC. Il primo è Telerik Extensions per MVC. Questi sono implementati come helper HTML che sputano il markup appropriato (html e jQuery). Il secondo è il framework Kendo che è un framework basato su jQuery puro che funziona bene con MVC (ma funziona anche bene con altri framework web là fuori).

Entrambi sono buoni esempi di come creare widget riutilizzabili che possono essere rilasciati con poche righe di codice. La bellezza di queste strutture sta nella loro estensibilità sia in termini di funzionalità che di aspetto.

    
risposta data 19.03.2012 - 17:57
fonte
1

Certo che puoi, devi solo reimplementare tutte le cose che le webforms fanno per funzionare, ma in modo efficiente.

Non c'è motivo per cui non puoi avere un modello parziale che rende un "widget" e migliora anche quel widget con le funzionalità javascript e ajax.

Dovrai scrivere alcune righe di codice sul "back-end" per supportare l'ajax. Indipendentemente dal fatto che centinaia di linee di codice di gestione HTTP o 2 linee dipendono da quanta astrazione si spinge in un livello framework.

    
risposta data 19.03.2012 - 17:17
fonte
0

L'approccio MVC a questo problema potrebbe essere quello di creare un plug-in dell'interfaccia utente jQuery e avere il rendering dell'interfaccia utente. Potresti anche fornire alcune classi per aiutare a fornirgli i dati. Non credo ci sia lo stesso requisito di implementazione di drag-n-drop in MVC per una buona ragione.

    
risposta data 19.03.2012 - 16:59
fonte

Leggi altre domande sui tag