Vorrei sapere cosa, perché o quando è meglio scegliere cshtml e cosa, perché o quando è meglio scegliere le tecnologie aspx? A cosa sono destinate queste due tecnologie?
Grazie,
Vorrei sapere cosa, perché o quando è meglio scegliere cshtml e cosa, perché o quando è meglio scegliere le tecnologie aspx? A cosa sono destinate queste due tecnologie?
Grazie,
Risposte:
Come altre persone hanno risposto, .cshtml
(o .vbhtml
se questo è il tuo gusto) fornisce una mappatura del gestore per caricare il motore MVC. L' .aspx
estensione carica semplicemente aspnet_isapi.dll che esegue la compilazione e fornisce moduli web. La differenza nella mappatura del gestore è semplicemente un metodo per consentire ai due di coesistere sullo stesso server consentendo sia alle applicazioni MVC che alle applicazioni WebForms di vivere sotto una radice comune.
Ciò consente a http://www.mydomain.com/MyMVCApplication di essere valido e servito con le regole MVC insieme a http://www.mydomain.com/MyWebFormsApplication di essere valido come modulo web standard.
Modifica:
per quanto riguarda la differenza nelle tecnologie, il framework di modelli MVC (Razor) ha lo scopo di restituire le pagine .Net a una piattaforma più RESTful "basata sul web" di viste basate su modelli che separano la logica del codice tra il modello (oggetti aziendali / dati) , la vista (ciò che vede l'utente) e i controller (la connessione tra i due). Il modello WebForms (aspx) è stato un tentativo da parte di Microsoft di utilizzare un complesso incorporamento di javascript per simulare un'applicazione più stateful simile a un'applicazione WinForms completa di eventi e un ciclo di vita della pagina che sarebbe in grado di mantenere il proprio stato da una pagina all'altra.
La scelta di utilizzare l'uno o l'altro sarà sempre controversa perché ci sono argomenti a favore e contro entrambi i sistemi. Mi piace la semplicità dell'architettura MVC (sebbene il routing sia tutt'altro che semplice) e la facilità della sintassi Razor. Penso che l'architettura di WebForms sia troppo pesante per essere una piattaforma web efficace. Detto questo, ci sono molti casi in cui il framework WebForms fornisce un modello molto succinto e utilizzabile con una ricca struttura di eventi ben definita. Tutto si riduce alle esigenze dell'applicazione e alle preferenze di chi la costruisce.
Razor è un motore di visualizzazione per ASP.NET MVC e anche un motore di modelli . Il codice Razor e il codice inline ASP.NET (codice misto a markup) vengono entrambi compilati per primi e trasformati in un assembly temporaneo prima di essere eseguiti. Pertanto, proprio come C # e VB.NET compilano entrambi in IL, il che li rende intercambiabili, il codice Razor e Inline sono entrambi intercambiabili.
Pertanto, è più una questione di stile e interesse. Sono più a mio agio con il razor, piuttosto che con il codice inline ASP.NET, cioè preferisco le pagine Razor (cshtml) alle pagine .aspx.
Immagina di voler ottenere una Human
classe e renderla. Nei file cshtml scrivi:
<div>Name is @Model.Name</div>
Mentre nei file aspx scrivi:
<div>Name is <%= Human.Name %></div>
Come puoi vedere, il @
segno del rasoio rende molto più facile mescolare codice e markup.
Model
è usato per visualizzazioni fortemente tipizzate, in cui definisci il tuo tipo in alto usando la model
parola chiave.
Mentre la sintassi è certamente diversa tra Razor ( .cshtml
/ .vbhtml
) e WebForms ( .aspx
/ .ascx
), (Razor è il più conciso e moderno dei due), nessuno ha menzionato che mentre entrambi possono essere utilizzati come motori di visualizzazione / motori di modellazione, ASP.NET tradizionale I controlli Web Form possono essere utilizzati su qualsiasi file .aspx o .ascx, (anche in coesione con un'architettura MVC).
Ciò è rilevante nelle situazioni in cui sono state stabilite soluzioni di lunga data a un problema e impacchettate in un componente collegabile (ad esempio un controllo di caricamento di file di grandi dimensioni) e si desidera utilizzarlo in un sito MVC. Con Razor, non puoi farlo. Tuttavia, è possibile eseguire tutte le stesse elaborazioni back-end che useresti con un'architettura ASP.NET tradizionale con una visualizzazione Web Form.
Inoltre, le visualizzazioni dei moduli Web ASP.NET possono avere file Code-Behind, che consentono di incorporare la logica in un file separato che viene compilato insieme alla visualizzazione. Mentre la comunità di sviluppo software sta crescendo fino a vedere le architetture strettamente collegate e il modello Smart Client come una cattiva pratica , era il modo principale di fare le cose ed è ancora molto possibile con i file .aspx / .ascx. Il rasoio, intenzionalmente, non ha tale qualità.
I file cshtml sono quelli usati da Razor e come indicato come risposta a questa domanda , il loro vantaggio principale è che possono essere renderizzati all'interno di unit test. Le varie risposte a questo altro argomento porteranno molti altri punti interessanti.