2009-05-21 18 views
29

Sebbene il classico metodo ASP di include lato server funzioni in ASP.NET, ho l'impressione che non sia il metodo preferito. In che modo "dovrei" ottenere lo stesso effetto?L'equivalente ASP.NET del lato server include

Ecco come lo sto facendo in questo momento:
<!-- #include file ="functionlib.aspx" -->

+0

Anche se non così specifica come la vostra domanda, si potrebbe trovare questo utile: http://stackoverflow.com/questions/23899/best-practices-for-refactoring-classic-asp –

risposta

34

Ora avete un numero di opzioni che forniscono questo effetto, ma in un modo diverso.

  • Controlli utente (ascx)
  • pagine master (.Master)
  • controlli lato server (DLL)
  • librerie di classi (DLL)
  • classi App_Code (Cs /. vb)

Ciascuno viene utilizzato in modo diverso per ottenere risultati diversi. Dipende da cosa stai davvero cercando di fare. Dato il nome del tuo file di inclusione, immagino che stai cercando di includere le funzioni della libreria che verranno utilizzate nel contesto della tua pagina.

Di conseguenza dovresti scrivere una libreria di classi che contiene i metodi e importarli nell'applicazione/aspx.

Se stai cercando una pagina che faccia funzionare la maggior parte del layout per fornire un corpo per contenuti diversi, ti interesseranno le pagine master.

Se stai guardando i controlli dei modelli che possono essere utilizzati in molte pagine, dovrai controllare i controlli utente.

Se si stanno osservando i controlli dei modelli che possono essere utilizzati da molti utenti in molti progetti, sarà possibile osservare Controlli lato server.

Se stai guardando una libreria di classi/metodi, allora svilupperai una libreria di classi o userai una classe app_code che può essere compilata JIT la prima volta che viene chiamata. Questo potrebbe in un tratto essere considerato più come ASP classico, ma in realtà funziona più come una classe da una libreria di classi come una singola unità.Puoi chiamarlo dal codice codebehind o dai tag <%%> nel tuo codice aspx/ascx senza richiedere un riferimento a una libreria di classi.

In realtà non usiamo più "include" di per sé, ma ognuno di questi strumenti nel toolkit consente di fornire concetti simili per diversi scenari. In qualità di sviluppatore, interagirai in modo diverso con l'intero ciclo di vita della pagina delle tue pagine web. ASP.NET è una bestia molto diversa rispetto alla classica ASP. Richiede davvero una diversa visione/approccio e richiederà un po 'di pazienza per capire le differenze.

+2

Non dimenticare le classi App_Code - che sono più vicine al classico modello ASP di una libreria di classi. –

+0

Oh sì, ho dimenticato quelli ... grazie – BenAlabaster

8

Se you'e utilizzando ASP.NET MVC quindi Html.RenderPartial è tuo amico qui.

http://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial.aspx

Una visione parziale può essere implementato come un ascx o un aspx e mettere la chiamata in precedenza nella tua pagina "primario", dice fondamentalmente "ottenere l'uscita da questo punto di vista parziale e rendono qui".

Le viste parziali possono utilizzare i ViewData ricevuti dalla vista principale dal controller.

+0

Solo se sei in ASP.NET MVC. –

+1

Er ..... si. Per qualche motivo leggo "MVC" nella domanda quando chiaramente non c'è. Le persone continuano a fare ASP.NET ??? ;-) –

+0

lol @ Martin ... ehm, si. MVC è solo una moda passeggera che tutti smetteranno di usare la prossima settimana. Che le guerre religiose inizino;) – BenAlabaster

1

Sembra che ciò che è necessario osservare sia l'intero concetto di MasterPages.

A meno che non si stia cercando solo le funzioni di importazione e altre utilità (non il contenuto HTML). Se questo è il caso (e stai usando il modello code-behind), dovresti essere in grado di includere il file o lo spazio dei nomi appropriato usando il comando importa nella parte superiore della tua pagina .vb (aggiustalo di conseguenza per C#).

11

Che ne dici di <% Response.WriteFile("myFile.aspx) %>?

See: https://support.microsoft.com/kb/306575

+0

Semplice ed efficace. Mi piace :). –

+11

solo per chiarire, anche se il file incluso finisce in '.aspx', non verrà elaborato dal motore asp.net – mxmissile

Problemi correlati