2010-06-24 15 views
9

Utilizzo ASP.NET (C#) negli ultimi due anni. Ho imparato così tanto, ma c'è ancora molto da imparare :)Utilizzo di controlli utente Web invece di moduli Web

ho MasterPages, 'controlli utente Web' usato per cose come le intestazioni, piè di pagina di navigazione, ecc

Una cosa che non ho mai veramente intesa è la pratica dell'uso di "controlli utente Web" per i contenuti e la logica dell'utente;

Home.aspx ------ Home.ascx 
AboutUs.aspx ----- AboutUs.ascx 
Ordering.aspx ---- Ordering.acsx 

Ho lavorato con alcuni progetti negli ultimi mesi che utilizzano questa struttura. Sono consapevole che questa è una pratica comune, ma non ne capisco appieno i benefici.

Mi ricordo quando ho provato questo approccio prima e ho finito per avere problemi di visualizzazione con i controlli come Gridview ... una volta che ho preso tutta la logica e l'ho inserita in una pagina .aspx, tutto ha funzionato bene.

Ora mi rendo conto che forse ho dovuto aggiungere Gridview alla raccolta viewstate ... ma ciò non fa che rafforzare la mia difficoltà a capire perché viene utilizzato questo approccio, visto il problema del viewstate.

Comprendo appieno i vantaggi dei "controlli utente Web" in relazione a elementi come intestazioni, menu, piè di pagina ecc. Ovunque che implichino la duplicazione ma i progetti che ho visto hanno pagine/controlli che sono piuttosto specifici - in altre parole è improbabile che possa essere riutilizzato da qualsiasi altra parte - la pagina aspx contiene solo un controllo (.ascx) con il contenuto e la logica e verrà utilizzata solo su quella pagina, da nessun'altra parte.

Ignorando il "riutilizzo del codice", quali altri vantaggi offre questo approccio?

risposta

2

Penso che il tuo esempio di PageA.aspx -> PageA.ascx sia in realtà un cattivo esempio per evidenziare i vantaggi dei controlli utente web. Fai un passo indietro da questi esempi di controllo "pagina" e pensa allo scopo principale di un controllo utente web. Servono allo scopo di incapsulare l'interfaccia utente e la funzionalità all'interno di un blocco discreto.

Il più grande vantaggio a mio avviso è sapere che se sviluppo qualcosa come un modulo di commenti una volta come controllo utente Web e lo distribuisco nelle pagine del mio sito che ho un singolo elemento da aggiornare nella soluzione che aggiornerà ogni pagina su cui esiste.

Un altro vantaggio meno ovvio è che molti sistemi di gestione dei contenuti come Umbraco utilizzano il controllo utente Web come plugin. In questo modo puoi sviluppare plugin per l'utente finale/editor per selezionare e inserire i contenuti della pagina come meglio credono.

+0

Brian, posizionare qualcosa come un modulo di commento in un controllo web ha perfettamente senso, io sono tutto per posizionare widget come questo nei controlli ... forse questi progetti che ho visto dove l'intera pagina è annidata all'interno di un controllo web non è il modo di fare le cose, dopo tutto? .... se Home.aspx contenesse più controlli come "HomepageSlideshow.ascx", "TwitterFeed.ascx", ciò avrebbe molto più senso. – Dal

+0

@Dal, esattamente. Sebbene tecnicamente diversa una pagina e un controllo utente web si comportino essenzialmente in modo molto simile e ci sia bisogno di un vero scopo, in modo che l'approccio che stai descrivendo sia stato preso. Senza ulteriori dettagli non c'è alcun beneficio evidente –

4

controlli utente vengono utilizzati all'interno di moduli Web ... loro non sono utilizzati in sostituzione


Edit:

In tal caso, non vedo alcun beneficio in utilizza lo stesso metodo (oltre al riuso). Può effettivamente avere un sovraccarico, dal momento che gli eventi del ciclo di pagina devono passare dalla pagina al controllo.

+0

Ne sono consapevole: il mio punto è che avrete una pagina come Home.aspx e tutto ciò che contiene è un controllo personalizzato chiamato Home.ascx ... Home.aspx è quasi come un wrapper ... I ' Sto cercando di capire perché questo approccio è usato soprattutto nei casi in cui non è richiesto il riutilizzo del codice. – Dal

+1

In questo particolare esempio non vi è alcun reale vantaggio nell'utilizzo di un controllo utente web. Sembra che Masterpages sarebbe stato più appropriato. –

+0

@Ed B - Questa è esattamente la mia situazione;) – Dal

Problemi correlati