Question

En tant que grand fan de XSL, je suis très heureux d’utiliser xsl en tant que vue de notre framework MVC propriétaire sur ASP.NET. Les objets du modèle sont sérialisés sous le capot à l'aide du sérialiseur XML .NET, et nous utilisons des modèles xsl assez atomiques pour déclarer comment chaque objet ou propriété doit être transformé.

Par exemple:

  <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>

Ce mécanisme nous permet de remplacer rapidement les modèles de correspondance par défaut, comme si un modèle correspond au dernier élément de la liste, ou à celui sélectionné, etc. dont nous avons besoin. Les modèles partagés communs peuvent être scindés et inclus.

Cependant

Même si je peux ignorer l'inconvénient de la verbosité de xsl (parce que le schéma Visual Studio intellisense + snippets est vraiment lisse, un éloge de l'équipe VS), l'inconvénient de ne pas avoir l'intellisense sur les objets typés forts dans le modèle moi.

J'ai vu les contrôles utilisateur ASP.NET MVC + en action et commençais vraiment à l'adorer, mais je me demande bien;

Existe-t-il un moyen d'obtenir une sorte d'intellisense via XML ou connaissez-vous un langage qui offre la liberté et la déclarativité de XSL tout en offrant les avantages strongtype / intellisense de webforms / usercontrols / asp.net.mvc-view?

(Je connais probablement la réponse: "non", et je me retrouverai bientôt en train d'utiliser le très cool mvc shizzle de Phil Haack ...)

Était-ce utile?

La solution

Vous pouvez utiliser le formulaire sérialisé (xml) de vos objets et le modifier à l'aide de l'éditeur XML de VS (j'utilise VS2008).

Associez ensuite un schéma xsd à ce document XML. Utilisez le schéma que xsd, exe s'est généré et qu'il utilise dans la sérialisation / désérialisation.

Vous constaterez que vous obtenez gratuitement l'intellisense !

De plus, si vous modifiez le schéma et ajoutez

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

l'éditeur XML vous invitera non seulement à indiquer les noms et valeurs d'éléments ou d'attributs possibles, , mais il affichera également le message "Explication utile" à chaque fois. l’un d’eux ayant les données d’annotation saisies dans le schéma XML.

Pour savoir comment associer un schéma xml à un document xml, recherchez Aide locale VS2008 ou recherchez-le sur MSDN en ligne ou lisez-le ici .

J'espère que cela vous a aidé.

A bientôt,

Dimitre Novatchev

Autres conseils

C’est un peu hors sujet, mais ayant déjà créé un système de gestion de contenu avec xsl (t) et la douleur qui en a résulté, je recommanderais asp.net mvc pour d’autres raisons que intellisense. Mais c’est bien.

À l’origine, j’utilisais xsl pour séparer la vue des données, ce qu’elle a fait. Mais les concepteurs ont trouvé cela très difficile, surtout parce que cela leur ressemblait html. Plus de crochets, etc. Et je discutais continuellement, "mais pourquoi ne puis-je pas avoir un document contenant tout dedans"

Xsl était également très lent et avait très faim de mémoire. Les erreurs de mémoire insuffisante sont gênantes, et vous finirez par arriver trop tard. Et bien sûr, la mise en cache utilise simplement plus de mémoire.

Nous n’avons vraiment pas regardé en arrière depuis que nous avons opté pour MVC. Il est même possible de créer votre propre moteur de vue si vous vous sentez vraiment aventureux. Vous pouvez donc garder un peu de xsl là où vous en ressentez le besoin.

En fait, il existe déjà un projet basé sur celui-ci dans les bibliothèques de MVCContrib .

J'espère que cela vous aidera dans votre décision

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top