Qual è il "ciclo di vita della pagina" di una pagina ASP.NET MVC, rispetto ai WebForms ASP.NET?


158

Qual è il "ciclo di vita della pagina" di una pagina ASP.NET MVC, rispetto ai WebForms ASP.NET?

Sto cercando di capire meglio questa domanda "semplice" al fine di determinare se le pagine esistenti che ho in un (molto) semplice sito possono essere facilmente convertite da WebForms ASP.NET.

O una "conversione" del processo di seguito, o un ciclo di vita alternativo sarebbe quello che sto cercando.

Cosa sto facendo attualmente:

(sì, lo so che chiunque sia in grado di rispondere alla mia domanda già sa tutto questo - sto solo cercando di ottenere un confronto del "ciclo di vita", quindi ho pensato di iniziare compilando ciò che già tutti sappiamo)

Rendering della pagina:

  • Ho una pagina principale che contiene il mio modello di base
  • Ho pagine di contenuti che mi danno regioni nominate dalla pagina principale in cui inserisco il contenuto.
  • In un gestore di eventi per ogni pagina di contenuto carico i dati dal database (principalmente di sola lettura).
  • Associo questi dati ai controlli ASP.NET che rappresentano griglie, menu a discesa o ripetitori. Tutti questi dati 'vivono' all'interno dell'HTML generato. Parte di esso entra in ViewState (ma non ne parlerò troppo!)
  • Ho impostato le proprietà o associato i dati a determinati elementi come i controlli Image o TextBox sulla pagina.
  • La pagina viene inviata al client reso come HTML non riutilizzabile.
  • Cerco di evitare di utilizzare ViewState diverso da quello di cui la pagina ha bisogno come minimo.

Lato client (non utilizzando ASP.NET AJAX):

  • Potrei usare JQuery e alcuni brutti trucchi per trovare i controlli sulla pagina ed eseguire operazioni su di essi.
  • Se l'utente seleziona da un menu a discesa, viene generato un postback che attiva un evento C # nel mio codebehind. Questo evento può andare al database, ma qualunque cosa faccia una pagina HTML completamente nuova generata finisce per essere rispedita al client.
  • Posso usare Page.Session per memorizzare coppie chiave-valore che devo riutilizzare in seguito

Quindi con MVC come cambia questo "ciclo di vita"?


2
Alcuni riferimenti dai miei segnalibri che evidenziano come funziona la pipeline di richiesta in un MVC ASP.NET. Ciò sarebbe generalmente utile 1. per comprendere ASP.NET MVC stesso 2. per capire quali sono i diversi punti di iniezione forniti da MVC e per capirlo. https://docs.google.com/open?id=0B0_EIyBZvSQsOTU3N2Q2NDEtMWNjMS00ZTc0LWJmMjUtM2I0M2I5NDY2ZDNl [ simple-talk.com/content/article.aspx?article=1358](https://...
humblelistener


il ciclo di pagine è il seguente: stackoverflow.com/questions/15066770/…
Insan

Risposte:


39

Cercherò di commentare ciascuno dei punti elenco che hai citato:

Le tue pagine master esistono ancora in MVC e vengono utilizzate per fornire un layout coerente al sito. non molto nuovo lì.

Le tue pagine di contenuti diventeranno visualizzazioni nel mondo MVC. Forniscono comunque le stesse aree di contenuto per le tue pagine mastro.

La gestione degli eventi dei moduli web non dovrebbe essere utilizzata in MVC, invece le classi del tuo Controller e i loro metodi di azione gestiranno il caricamento dei tuoi dati in un "modello" che viene passato alla vista.

Sebbene sia possibile eseguire il databinding in stile webform in MVC, trovo che non sia la soluzione ottimale. Meglio posizionare i dati in una classe di modello e digitare fortemente la vista in modo da avere accesso diretto a quel modello. Quindi è semplicemente una questione di usare il<%= ViewData.Model.SomeProperty %> sintassi per accedere ai dati e visualizzarli nelle posizioni desiderate. Per quanto riguarda viewstate, la mia raccomandazione è di dimenticare che esiste persino.

Ricorda che uno dei vantaggi dell'utilizzo di MVC è che hai il controllo del codice HTML che invii al client. Abbraccia quel potere e prova a trovare soluzioni che ti consentano di mantenere quel controllo. I controlli Webform tentano di nasconderti l'html e di conseguenza rendono più difficile personalizzare l'html quando è necessario.

Consiglio vivamente JQuery o una delle altre librerie javascript altrettanto potenti. Ma impara ad usarli per accedere direttamente al DOM HTML ed evitare i problemi di id mangling dei controlli webform.

È possibile utilizzare jquery per agganciarsi alla selezione a discesa sul lato client e inviare richieste di stile standard o ajax. Tali richieste possono restituire nuove pagine, reindirizzamenti, frammenti html o persino dati JSON che possono essere utilizzati per aggiornare la pagina esistente.

La sessione asp.net può essere utilizzata secondo necessità.


grazie per la tua risposta decisa. in realtà è stato JQuery che mi ha spinto a tornare a MVC. L'avevo guardato brevemente e l'avevo respinto (almeno per ora). giocare con JQuery e cercare di trovare solo cose nel DOM mi faceva troppo
male,

Le pagine MVC hanno una Modelproprietà per accedere al modello, non è necessario passare attraverso ViewData.
Tsahi Asher,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.