作为一个巨大的XSL粉丝,我很高兴在我们在ASP.NET上的专有MVC框架中使用xsl作为视图。使用.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架构intellisense +片段真的很光滑,赞美VS团队),但是对模型中的强类型对象没有智能感知的缺点实际上是在窃听我
我已经看到ASP.NET MVC +用户控件正在运行并真正开始喜欢它,但我想知道;
有没有一种方法可以获得某种我们正在迭代的XML的智能感知,或者您是否知道提供XSL的自由和声明性的语言,但具有强大的类型/智能感知功能,例如webforms / usercontrols / asp.net.mvc视图?
(我可能知道答案:“不”,我会发现很快就会使用Phil Haack非常酷的mvc shizzle ......)
答案 0 :(得分:1)
您可以使用对象的序列化(xml)形式,并使用VS的XML编辑器进行编辑(我使用的是VS2008)。
然后将xsd架构与此xml文档相关联。使用xsd,exe生成的模式以及它在序列化/反序列化中使用的模式。
您将看到免费获得智能感知!
此外,如果您编辑架构并添加
<xs:annotation> <xs:documentation> Helpful Explanation. </xs:documentation> </xs:annotation>
然后,XML编辑器不仅会提示您可能的元素或属性名称和值,而且还会为每个人弹出“有用的解释”其中包含输入到xml架构中的注释数据。
要了解如何将xml架构与xml文档相关联,请查找local VS2008 help或find it on MSDN online,或阅读here。
希望这会有所帮助。
干杯,
Dimitre Novatchev
答案 1 :(得分:0)
这是一个偏离主题但是已经沿着创建带有xsl(t)的CMS的路线以及由于其他原因而导致我推荐asp.net mvc的痛苦而不是intellisense。但那很好。
我最初使用xsl将视图与数据区分开来。但设计师发现它很难走,主要是因为它们看起来都像是html。更多尖括号等等。我一直在进行对话,“但为什么我不能在其中找到所有的文件”
Xsl也很懒散,而且记忆力很大。内存不足的错误令人尴尬,当你让它们迟到的时候。当然,缓存只会占用更多内存。
自从我们使用MVC以来,确实没有回头看,如果你真的喜欢冒险,甚至可以选择创建自己的视图引擎。所以你可以在那里留下一点xsl,你觉得有需要。
事实上,MVCContrib库中已有一个基于该项目的项目。
希望这有助于您的决定