2011-06-13 88 views
6

我们有一个现有的功能齐全的ASP.NET MVC 2应用程序。我正在创建一个MVC 3应用程序,该应用程序应该与现有应用程序具有相同的外观和感觉。也就是说,它应该使用相同的导航ascx,页眉和页脚ascx等。现有的应用程序的ascx基于模型中的内容填充自己,因此它不是“仅”我想要引入的UI内容,而是模型以及与这些控件有关的控制器逻辑。在MVC应用程序之间共享视图,逻辑等

有没有什么好的方法可以做到这一点,而不需要大量重构原来的应用程序?我听说过Portable Areas(http://lostechies.com/erichexter/2009/11/01/asp-net-mvc-portable-areas-via-mvccontrib/),但看起来这需要一个重要的重构在现有的应用程序。我还研究过Razor单一文件生成器扩展,它允许我们将视图编译为dll并共享它们,但是,这需要将现有的应用程序转换为MVC 3,然后将视图转换为Razor。 (而且我还不确定在那之后它会一定很“容易”。)

我可以忽略任何明显的东西吗?它只是觉得应该有一个很好的方法来做到这一点,但也许现有的应用程序只需要大修。 :P

在此先感谢!

+4

可能重复(http://stackoverflow.com/questions/4800819/sharing-controllers-and-views-with-multiple-web-applications) ,我看到的唯一区别是Razor而不是常规View Engine的继承。 – 2011-06-14 00:12:52

+0

谢谢,看起来你是对的。 – dizzwave 2011-06-14 16:20:37

回答

1

最简单的解决方案可能是将视图更新为MVC3(如果您未与不能使用.NET 4的某些内容集成在一起,则容易忽略),并在将视图移至共享库时将视图转换为Razor。 Razor视图引擎在内部与Web表单视图引擎有许多不同之处,使得它更容易适应共享库的使用。

在我自己的项目中,我有预编译的视图引擎处理所有视图,但很容易设置多个视图引擎,以便第一个找到有效视图将被使用。对于布局,您需要为这两个视图引擎保留一个版本,但如果您在将所有视图一次转换为Razor时遇到问题,那么这不是多余的额外工作。

共享控制器逻辑相当简单。在您的共享库中定义控制器,并将其在控制器文件夹中进行分类,系统将查找控制器。

+0

很酷,谢谢。这和RazorSingleFileGenerator扩展一样吗?如果没有,你能否提供一个更全面描述如何去做你所谈论的内容的链接? – dizzwave 2011-06-14 16:16:27

+0

我使用命令行工具而不是单个文件生成器和更多自定义视图引擎,但是,它基本上是同一件事。 – 2011-06-14 21:21:58

相关问题