1

作为一个巨大的 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>

这种机制允许我们快速覆盖默认匹配模板,例如在列表中的最后一项或选定的项上匹配模板等。此外,.NET 中的 xsl 扩展对象允许我们只需要一点额外的抓地力. 可以拆分和包含公共共享模板。

然而

尽管我可以忽略 xsl 的冗长缺点(因为 Visual Studio 架构智能感知 + 片段真的很光滑,对 VS 团队的赞美),但模型中没有对强类型对象进行智能感知的缺点确实让我很烦恼。

我已经看到了 ASP.NET MVC + 用户控件的实际应用,并且真的开始喜欢它,但我想知道;

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

(我可能知道答案:“不”,我很快就会发现自己在使用 Phil Haack 非常酷的 mvc shizzle ......)

4

2 回答 2

1

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

然后将一个 xsd 模式关联到这个 xml 文档。使用 xsd,exe 自己生成的模式以及它在序列化/反序列化中使用的模式。

您将看到您免费获得智能感知

此外,如果您编辑架构并添加

    <xs:注解>
      <xs:文档>
        有用的解释。
      </xs:文档>
    </xs:注解>

那么 XML 编辑器不仅会提示您可能的元素或属性名称和值,而且还会为每个将注释数据输入 xml 模式的元素或属性弹出“有用的说明”。

要了解如何将 xml 架构与 xml 文档相关联,请查找 本地 VS2008 帮助在线 MSDN 上找到它,或在此处阅读。

希望这有帮助。

干杯,

迪米特·诺瓦切夫

于 2008-11-21T04:01:48.803 回答
0

这有点离题了,但一直在使用 xsl(t) 创建 CMS 的路线上,以及导致我推荐 asp.net mvc 的痛苦,而不是智能感知。但这很好。

我最初使用 xsl 将视图与数据分开,它确实做到了。但设计师发现这很困难,主要是因为对他们来说这一切看起来都像 html。更多尖括号等。我一直在进行对话,“但是为什么我不能有一个包含所有内容的文档”

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

自从我们使用 MVC 以来,真的没有回头路,如果您真的很喜欢冒险,甚至可以选择创建自己的视图引擎。所以你可以在你觉得需要的地方保留一点 xsl。

事实上,在MVCContrib库中已经有一个基于该项目的项目。

希望这有助于您的决定

于 2008-12-17T12:42:38.713 回答