Domanda

Ho notato Scott Guthrie sta cominciando a Razor un < a href = "http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx"> bel po ' sul suo blog, ma io sono solo che non sicuri che sia una buona misura per il mio stile.

Certo è uno stile abbastanza sconosciuto per qualcuno che è abbastanza usato per uno "standard" sorta di ASP.Net markup (luogo contenuti titolari e codice inline), ma ci si sente proprio come un sacco di pagine aggiuntive per la gestione e markup meno chiara a me.

Quali sono i sentimenti delle altre persone su di esso? E 'qualcosa che si ritiene dovrebbe essere presa seriamente in considerazione quando impalcature nuove pagine MVC o è solo cercando di risolvere un problema che non esiste?

È stato utile?

Soluzione

[Disclaimer: io sono uno degli sviluppatori Microsoft su MVC e Razor, quindi potrei essere un po 'prevenuto:)]

Abbiamo progettato Razor essere un linguaggio conciso di template che utilizza solo la quantità necessaria minima di caratteri di controllo. Direi che gran parte del vostro punto di vista possono essere espressi con un minor numero di caratteri che lo stesso codice con il "tradizionale" WebForms sintassi.

Ad esempio il seguente frammento di codice nella sintassi ASPX:

<% if(someCondition) { %>
  <ol>
  <% foreach(var item in Model) { %>
     <li><%: item.ToString() %></li>
  <% } %>
  </ol>
<% } %>

Può essere espresso come segue in Razor:

@if(someCondition) {
   <ol>
   @foreach(var item in Model) {
      <li>@item.ToString()</li>
   }
   </ol>
}

Mentre la versione ASPX dispone di 21 caratteri di transizione (il <% e %>), la versione Razor ha solo tre (@)

Direi che i vantaggi del rasoio sono i seguenti:

  1. sintassi concisa, che è molto simile al modo in cui si scrive regolare codice C # (check out il seguente post sul blog recente da Phil Haack confrontando ASXP con la sintassi Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx )
  2. HTML automatico codifica di uscita (che consente di proteggersi da attacchi di iniezione html)
  3. Costruito nel (anche se non al 100%) la convalida del markup, che ti aiuta a evitare i tag sbilanciate

I concetti di pagina legati anche la mappa facilmente da ciò che avete in ASPX

  • Come si può vedere il codice inline è ancora consentito
  • Sezioni (che può essere facoltativo) sono equivalenti ai segnaposto di contenuto
  • pagine di layout, invece di pagine master
  • I concetti di vista completa e parziale sono uguali
  • blocchi @functions { ... } invece di <script runat="server"> ... </script>

Oltre Razor ha una serie di concetti utili che direi sono meglio di ciò che è disponibile in ASPX:

  • funzioni @helper per davvero facile creazione di funzioni che emettono markup
  • @model parola chiave per specificare il tipo di modello del vostro vista, senza dover scrivere una direttiva <%@ Page ... con il nome completo della classe

Mi piacerebbe pensare che abbiamo affrontato un problema reale, che è quello di permettere a più facilmente concisa scrittura e viste conformi agli standard, mentre allo stesso tempo fornendo con modi per codice di refactoring comune.

Naturalmente, non tutti si preferisce la sintassi, che è il motivo per cui stiamo anche sostenendo pienamente la vista del motore ASPX. Inoltre è possibile controllare Spark e NHaml, che sono due motori di vista 3rd-party che godono di notevole seguito comunità. Il seguente post sul blog ha un buon confronto tra le diverse offerte: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

Altri suggerimenti

Personalmente apprezzo molto la riduzione nel modo in cui vengono usati molti caratteri di escape. Utilizzando <% %> diventa molto noioso rispetto al @{} e non è quasi come sintatticamente attraente.

Inoltre, la scrittura di un intero definizione per il codebehind e la pagina è semplificata ad un singolo @model model.

Come osservato anche da marcind, non dovendo includere sempre runat=server è molto bello anche.

In generale, ho davvero apprezzato usando il motore di Razor e lo trovo non solo rende le cose più facili su di me per sviluppare, ma rende anche il codice più facile da leggere.

Si può provare a questo convertitore . Per ulteriori informazioni consulta questo post del blog .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top