Pregunta

Como gran fanático de XSL, estoy muy feliz de usar xsl como vista en nuestro framework MVC patentado en ASP.NET. Los objetos en el modelo se serializan bajo el capó utilizando el serializador xml de .NET, y utilizamos plantillas xsl bastante atómicas para declarar cómo debe transformarse cada objeto o propiedad.

Por ejemplo:

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

Este mecanismo nos permite anular rápidamente las plantillas de coincidencia predeterminadas, como tener una plantilla que coincida en el último elemento de una lista, o la seleccionada, etc. Además, los objetos de extensión xsl en .NET nos permiten un poco más de agarre adicional que necesitamos Las plantillas compartidas comunes se pueden dividir e incluir.

Sin embargo

Aunque puedo ignorar la desventaja de la verbosidad de xsl (porque el esquema de Intellisense + fragmentos de Visual Studio realmente es ingenioso, alabado sea el equipo VS), la desventaja de no tener inteligencia sobre objetos de tipo fuerte en el modelo es realmente algo que está molestando yo

He visto los controles de usuario ASP.NET MVC + en acción y realmente estoy empezando a amarlo, pero me pregunto;

¿Hay alguna manera de obtener algún tipo de intellisense sobre XML sobre el que estamos iterando, o conoces un lenguaje que ofrezca la libertad y la capacidad de declaración de XSL pero que tenga los beneficios de tipo fuerte / intellisense de dichos formularios web / controles de usuario / asp.net.mvc-view?

(Probablemente conozco la respuesta: `` no '', y pronto me encontraré usando la genial onda de mvc de Phil Haack ...)

¿Fue útil?

Solución

Puede usar la forma serializada (xml) de sus objetos y editarla con el Editor XML de VS (uso VS2008).

Luego asocie un esquema xsd a este documento xml. Use el esquema que xsd, exe se generó y que usa en la serialización / deserialización.

¡Verás que obtienes intellisense gratis !

Además, si edita el esquema y agrega

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

entonces el Editor XML no solo le preguntará los posibles elementos o atributos, nombres y valores, sino que también desplegará la " Explicación útil " uno de ellos que tiene los datos de anotación ingresados ??en el esquema xml.

Para aprender cómo asociar un esquema xml a un documento xml, busque ayuda local de VS2008 o encuéntrelo en MSDN en línea , o léalo aquí .

Espero que esto haya ayudado.

Saludos,

Dimitre Novatchev

Otros consejos

Esto está fuera de tema, pero después de haber creado un CMS con xsl (t) y el dolor que causó, recomendaría asp.net mvc por otras razones que no sean intellisense. Pero eso es bueno.

Originalmente usé xsl para separar la vista de los datos, lo cual hizo. Pero a los diseñadores les resultó muy difícil, principalmente porque todo les parecía html. Más paréntesis angulares, etc. Y continuamente tenía la conversación, "pero ¿por qué no puedo tener un documento con todo en él"

Xsl también era lento y tenía mucha memoria. Los errores de falta de memoria son vergonzosos y para cuando los llegues tarde. Y, por supuesto, el almacenamiento en caché solo usa más memoria.

Realmente no ha habido retrospectiva desde que utilizamos MVC, incluso existe la opción de crear su propio motor de visualización si se siente realmente aventurero. Para que pueda mantener un poco de xsl allí donde sintió la necesidad.

De hecho, ya existe un proyecto basado en eso en las MVCContrib .

Espero que esto ayude a su decisión

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top