2009-05-12 13 views
13

Ci sono un sacco di domande su SO per quanto riguarda Visualizza Motori in ASP.Net MVC, e sull'utilizzo di quelli "personalizzati" invece di quello "predefinito". Per me, come programmatore di hobby, il termine "View Engine" è nuovo, e non sono stato in grado di capire cosa significhi. Quindi, le mie domande sono:Che cos'è un motore di visualizzazione MVC ASP.Net?

  1. Che cos'è un motore di visualizzazione?

  2. Cosa fa il motore di visualizzazione e quale ruolo nel pattern MVC viene riprodotto? (Strettamente correlato a 1 ...)

  3. Quali sono le principali caratteristiche/proprietà del View Engine predefinito che i programmatori desiderano modificare/evitare passando a un diverso View Engine?

  4. Quali sono i principali vantaggi di altri motori di visualizzazione comuni là fuori che gli sviluppatori cercano quando scelgono di utilizzarne uno diverso da quello standard? (Ho visto il nome "Spark View Engine" un sacco di volte, e scommetto che ce ne sono anche altri).

  5. Quando (in quali scenari) vorrei sviluppare il mio View Engine?

Lì, penso che sia tutto ciò che voglio chiedere (per ora). Dammi i motori di vista 101! =)

+0

Se questo dovrebbe essere wiki della comunità, per favore fatemelo sapere. –

+0

Non credo – TStamper

risposta

5

Il "motore di visualizzazione" gestisce il rendering della vista in html, xml o qualsiasi tipo di contenuto per cui è stato creato. All'interno di "MVC", sarebbe un aspetto della vista (V).

I diversi motori di visualizzazione hanno sintassi diverse, ecc. Per gestire il rendering. La decisione di utilizzare un altro motore di visualizzazione è molto probabilmente specifica per un progetto/programmatore. In alcuni casi possono vedere una limitazione effettiva o percepita del motore di visualizzazione predefinito; in altri casi può essere semplicemente un obiettivo o un obiettivo di progettazione diversi.

Per quanto riguarda Spark, il loro obiettivo è di essere molto più conciso del motore di visualizzazione predefinito e di rimanere nella sintassi simile a HTML il più possibile invece di cadere nei blocchi di script ASP.NET.

Come utente finale, l'unica volta in cui si desidera creare il proprio motore di visualizzazione probabilmente non lo è mai. ;) Non è un compito da prendere alla leggera, e probabilmente finirai per ri-implementare funzionalità che già esistono in un motore di visualizzazione esistente.

Modifica

OK. Quindi i file View.aspx fanno parte del motore di visualizzazione oppure il View Engine un insieme di classi che aiutano a scegliere quale View.aspx (o altro tipo di risposta ) che dovrebbe essere visualizzato? Come funziona ?

Il pattern MVC indica che il modello, la vista e il controller saranno "cose" separate. In ASP.NET MVC, il motore di visualizzazione predefinito utilizza il framework ASP.NET esistente, che include le pagine master, i file ASPX, ecc. Spark fa qualcosa di simile, ma è un motore diverso, quindi non funziona esattamente nello stesso modo. Quindi in senso generale i file di visualizzazione non sono specifici del motore, ma i file specifici, il loro layout su disco e il loro contenuto sono specifici per il motore di visualizzazione.

+0

OK. Così come la View.aspx fa parte del View Engine, o il View Engine è un insieme di classi che aiutano a scegliere quale View.aspx (o altro tipo di risposta) che dovrebbe essere reso? Come funziona? –

1

Oltre a voler sostituire completamente il motore di visualizzazione (ad esempio Spark), è possibile anche creare il proprio motore di visualizzazione solo per apportare una piccola modifica al comportamento del motore di visualizzazione predefinito. È possibile farlo creando un nuovo motore di visualizzazione che eredita dal motore predefinito e sovrascrive alcuni comportamenti.

Un esempio comune è il tweaking in cui il motore di visualizzazione appare sul disco rigido per i file .aspx. Ad esempio, è possibile creare un motore di visualizzazione che commuta automaticamente quale file view.aspx viene utilizzato in base al fatto che l'utente si trovi su un dispositivo mobile.

Vedere Mobile Web Sites with ASP.NET MVC and the Mobile Browser Definition File per un'implementazione di questo esempio.

Aggiornamento:

Scott appena pubblicato un updated ViewEngine implementation che ha importanti miglioramenti vs l'implementazione iniziale linkato sopra.

Problemi correlati