Asp.net mvc ASP.MVC:实现非模板视图引擎?

Asp.net mvc ASP.MVC:实现非模板视图引擎?,asp.net-mvc,template-engine,Asp.net Mvc,Template Engine,我对ASP.MVC相当陌生。对于我们的新Web应用程序,我正在考虑视图引擎的两个选项: 使用一些可用的视图引擎(默认引擎、NVelocity、Brail等)作为主视图代码生成器 实现特定于应用程序的C#DSL以生成HTML代码,这样视图代码的主要部分存储在C#类中(使用某种类型的代码) 2背后的想法。这将减少每次需要新视图时直接编写HTML代码的需要,但我不确定这是否是一种好方法。它的一个缺点是,如果不重新编译项目,就不可能更改生成的代码 你觉得怎么样?我在其他项目中也见过类似的方法,一般来说,

我对ASP.MVC相当陌生。对于我们的新Web应用程序,我正在考虑视图引擎的两个选项:

  • 使用一些可用的视图引擎(默认引擎、NVelocity、Brail等)作为主视图代码生成器
  • 实现特定于应用程序的C#DSL以生成HTML代码,这样视图代码的主要部分存储在C#类中(使用某种类型的代码)
  • 2背后的想法。这将减少每次需要新视图时直接编写HTML代码的需要,但我不确定这是否是一种好方法。它的一个缺点是,如果不重新编译项目,就不可能更改生成的代码


    你觉得怎么样?

    我在其他项目中也见过类似的方法,一般来说,这些方法麻烦多了。你失去的灵活性对于发电阶段的自动化来说代价太高了。想一想,需求往往只适用于一种特殊情况,现在想象一下您必须如何处理这种情况


    此外,如果您的视图给您带来了那么多的痛苦,我建议您可能没有正确使用视图。在整个站点中,您应该很少看到视图中的重复。例如,常见的部分应该重构为单独的块,并从中提取。

    好的,你关于灵活性的观点是正确的,尽管你需要的灵活性取决于应用程序的性质。例如,您可能有一个Web应用程序,它有许多彼此非常相似的网页,只显示不同类型的数据字段(假设它是一个向导,只是为了讨论)。-1这在Seaside中非常有效。史蒂芬:我从来没有说过不能做对,只是这可能暗示了一个坏主意。通常,频繁的重复可能是一种代码味道。