代码之家  ›  专栏  ›  技术社区  ›  Martin Kool

XSL(类似)声明性语言作为强类型模型上的MVC视图?

  •  1
  • Martin Kool  · 技术社区  · 17 年前

    作为XSL的忠实粉丝,我非常高兴在ASP.NET上使用XSL作为我们专有的MVC框架中的视图。模型中的对象在后台使用.NET的xml序列化程序进行序列化,我们使用非常原子的xsl模板来声明每个对象或属性应该如何转换。

    例如:

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

    尽管我可以忽略xsl冗长的缺点(因为VisualStudioSchema intellisense+代码片段真的很流畅,VS团队对此表示赞赏),但在模型中没有对StrongType对象使用intellisense的缺点确实让我感到困扰。

    有没有一种方法可以通过我们正在迭代的XML获得某种智能感知,或者您知道有一种语言提供XSL的自由性和声明性,但具有webforms/usercontrols/asp.net.mvc-view等强大的类型/智能感知优势?

    2 回复  |  直到 13 年前
        1
  •  1
  •   Dimitre Novatchev    17 年前

    您可以使用对象的序列化(xml)形式,并使用VS的xml编辑器对其进行编辑 (我使用VS2008)。

    您将看到您免费获得intellisense !

    此外,如果您编辑模式并添加

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

    然后,XML编辑器不仅会提示 但它也会弹出“有益的解释” 对于将注释数据输入到xml模式中的每个对象。

    local VS2008 help find it on MSDN online here .

        2
  •  0
  •   Simon Farrow    17 年前

    这有点离题,但我一直在使用xsl(t)创建CMS,并且由于intellisense以外的其他原因,我推荐使用asp.NETMVC。但这很好。

    在它里面“

    Xsl也很慢,而且非常需要内存。内存不足的错误是令人尴尬的,当你得到它们的时候,它已经很晚了。当然,缓存只会占用更多内存。

    事实上,目前已经有一个基于此的项目 MVCContrib

    推荐文章