Pergunta

Como um grande fã XSL, estou muito feliz em usar xsl quanto a vista no nosso framework MVC proprietária em ASP.NET. Objetos no modelo são serializados sob a capa usando serializador xml da NET, e usamos modelos XSL bastante atômicas para declarar como cada objeto ou propriedade deve transformar.

Por exemplo:

  <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 permite substituir rapidamente modelos de correspondência padrão, como ter um casamento de modelos no último item em uma lista, ou o selecionou uma, etc. Além disso, a extensão XSL objetos no .NET nos permitem apenas o pouco de aderência que precisamos. Comum compartilhada modelos podem ser divididos e incluídos.

No entanto

Mesmo que eu posso ignorar a desvantagem verbosidade do XSL (porque Visual Studio esquema intellisense + snippets realmente é liso, louvor ao VS-time), a desvantagem de não ter objetos intellisense sobre strongtyped no modelo é realmente algo que está incomodando me.

Eu vi controles de usuário ASP.NET MVC + em ação e realmente começando a amá-lo, mas eu me pergunto;

Existe uma maneira de obter algum tipo de intellisense sobre XML que estamos interagindo sobre, ou você sabe de uma linguagem que oferece a liberdade e declarativo de XSL, mas tem a strongtype / intellisense benefícios de, digamos, webforms / usercontrols / asp.net.mvc-view?

(Eu provavelmente sabe a resposta: "não", e eu vou me encontrar com Phil Haack totalmente arrefecer shizzle mvc breve ...)

Foi útil?

Solução

Você pode utilizar o formulário serializado (xml) de seus objetos e editá-lo com o Editor de XML da VS (eu uso VS2008).

Em seguida, associar um esquema XSD a este documento xml. Use o esquema que xsd, exe-se gerado e que ele usa na serialização / desserialização.

Você vai ver que você começa intellisense gratuitamente !

Além disso, se você editar o esquema e adicionar

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

seguida, o XML editor irá não só lhe as possíveis elementos de prompt ou atributos nomes e valores, , mas que também irá pop-out da "Explicação útil" para cada um dos que tem os dados de anotação inseridos no esquema XML.

Para saber como associar um esquema XML para um documento XML quer procurar o locais VS2008 ajuda ou encontrá-lo no MSDN on-line , ou lê-lo aqui .

Espero que isso ajudou.

Cheers,

Dimitre Novatchev

Outras dicas

Esta é uma espécie de off topic, mas tendo sido abaixo da rota de criação de um CMS com XSL (t) e a dor que causou eu recomendo asp.net mvc por outras razões além intellisense. Mas isso é bom.

Eu originalmente usado XSL para separar a vista dos dados, o que ele fez. Mas os designers achei muito difícil ir principalmente porque tudo parecia html para eles. Mais colchetes etc. E eu estava continuamente ter a conversa, "mas por que eu não posso ter um documento com tudo em que"

XSL também foi slooow, e muito memória com fome. Sem memória erros são embaraçosas, e pelo tempo que você levá-los a sua maneira de tarde. E de caching claro, apenas usa mais memória.

Não há realmente foi sem olhar para trás desde que fomos com MVC, há ainda a opção de criar o seu próprio motor de vista, se você está se sentindo realmente aventureiro. Então, você poderia manter um pouco de xsl lá onde você sentiu a necessidade.

Na verdade já existe um projeto com base em que, no MVCContrib bibliotecas.

Espero que isso ajude a sua decisão

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top