Domanda

Come grande fan di XSL, sono molto felice di usare xsl come vista nel nostro framework proprietario MVC su ASP.NET. Gli oggetti nel modello sono serializzati sotto il cofano usando il serializzatore xml di .NET e usiamo modelli xsl piuttosto atomici per dichiarare come dovrebbe trasformarsi ogni oggetto o proprietà.

Ad esempio:

  <xsl:template match="/Article">
    <html>
      <body>
        <div class="article">
          <xsl:apply-templates />
        </div>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="Article/Title">
    <h1>
      <xsl:apply-templates />
    </h1>
  </xsl:template>

  <xsl:template match="@*|text()">
    <xsl:copy />
  </xsl:template>

Questo meccanismo ci consente di sovrascrivere rapidamente i modelli di corrispondenza predefiniti, come avere un modello corrispondente sull'ultimo elemento in un elenco, o quello selezionato, ecc. Inoltre, gli oggetti estensione xsl in .NET ci consentono solo un po 'di grip extra di cui abbiamo bisogno. I modelli condivisi comuni possono essere suddivisi e inclusi.

Tuttavia

Anche se posso ignorare il lato negativo della verbosità di xsl (poiché lo schema intellisense + snippet di Visual Studio è davvero fluido, elogi al team VS), il rovescio della medaglia di non avere intellisense sugli oggetti a forma di forte nel modello è davvero qualcosa che infastidisce me.

Ho visto ASP.NET MVC + controlli utente in azione e ho davvero iniziato ad amarlo, ma mi chiedo;

Esiste un modo per ottenere una sorta di intellisense su XML su cui stiamo iterando o conosci un linguaggio che offre la libertà e la dichiaratività di XSL ma ha i vantaggi di tipo forte / intellisense di dire webforms / usercontrols / asp.net.mvc-view?

(Probabilmente conosco la risposta: "no", e mi ritroverò presto a utilizzare lo shizzle di mvc assolutamente fantastico di Phil Haack ...)

È stato utile?

Soluzione

Puoi usare il modulo serializzato (xml) dei tuoi oggetti e modificarlo con l'editor XML di VS (io uso VS2008).

Quindi associa uno schema xsd a questo documento xml. Usa lo schema che xsd, exe ha generato se stesso e che utilizza nella serializzazione / deserializzazione.

Vedrai che ottieni intellisense gratis !

Inoltre, se modifichi lo schema e aggiungi

    <xs:annotation>
      <xs:documentation>
        Helpful Explanation.
      </xs:documentation>
    </xs:annotation>

allora l'editor XML non ti chiederà solo i possibili elementi o attributi nomi e valori, ma mostrerà anche la "Spiegazione utile" " per ogni uno di quelli che ha i dati di annotazione immessi nello schema xml.

Per sapere come associare uno schema xml a un documento xml, cerca aiuto VS2008 locale o trovalo su MSDN online o leggilo qui .

Spero che questo abbia aiutato.

Saluti,

Dimitre Novatchev

Altri suggerimenti

Questo è un po 'fuori tema ma essendo stato sulla strada della creazione di un CMS con xsl (t) e il dolore che ha causato, raccomanderei asp.net mvc per altri motivi oltre a intellisense. Ma è carino.

Inizialmente ho usato xsl per separare la vista dai dati, cosa che ha fatto. Ma i progettisti hanno trovato molto difficile andare principalmente perché a loro tutto sembrava HTML. Più parentesi angolari ecc. E continuavo a parlare, "ma perché non posso avere un documento con tutto in esso "

Xsl era anche slooow e molto affamato di memoria. Gli errori di memoria insufficiente sono imbarazzanti e quando li fai arrivare fino a tardi. E ovviamente la memorizzazione nella cache utilizza solo più memoria.

Da quando siamo andati con MVC non c'è più stato alcun aspetto, c'è anche la possibilità di creare il tuo motore di visualizzazione se ti senti davvero avventuroso. Quindi potresti tenere un po 'di xsl lì dove ne sentivi il bisogno.

In effetti esiste già un progetto basato su quello nelle MVCContrib librerie.

Spero che questo aiuti la tua decisione

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