将MVC 2 ASPX转换为MVC 4 Razor视图引擎

8

我目前正在使用Visual Studio 2010和视图引擎为ASPX的MVC 2项目中工作。

因此,我决定使用Visual Studio 2012和视图引擎为Razor的MVC 4。

那么我是否能够完成上述任务?如果可以,如何操作?

我想听听您在类似情况下的经验。

注意:我的项目很大。


3
我们将stackoverflow从MVC/aspx转换为MVC/cshtml - 这并没有太大区别,只需要“添加一些引用,编写一个新的默认布局(以替换主页),用.cshtml文件代替.aspx”。大部分情况下,我只是将.aspx重命名为.cshtml,并修复任何问题(我在.cshtml文件中运行了全局搜索<%%>)。它就这样工作了。我认为我们通过创建一个新的Razor项目来复制配置文件中类似Razor的部分,并查看有哪些不同。 - Marc Gravell
@MarcGravell,您能详细解释一下“编写新的默认布局(以替换主页)”的含义吗? - Sampath
2
通常情况下,您会有一个 _ViewStart.cshtml 文件,它将 Layout 分配给旧版主页面的 cshtml 版本;例如,我们的 _ViewStart.cshtml 包括 Layout = "~/Views/Master.cshtml";,其中 ~/Views/Master.cshtml 是转换后的标准页面模板。 - Marc Gravell
@MarcGravell 我的项目非常庞大,拥有大量的视图。因此,替换代码语法将需要很长时间。您是否建议使用任何自动化工具来将ASPX语法替换为Razor? - Sampath
2
信不信由你,stackoverflow.com的代码库也相当庞大,拥有大量的视图。我不建议使用任何特定的自动化工具——至少对我们来说,转换并不痛苦到需要这样做。 - Marc Gravell
1个回答

6
在Visual Studio 2012中创建一个新的MVC4项目,并逐个将旧解决方案中的源文件添加到新解决方案中。从MVC3到MVC4的转换使用新解决方案更容易,我想从2->4的升级尝试可能会更加复杂。
ASPX到Razor的转换可能应该手动完成。虽然有一些转换器(例如这个或类似于这个SO问题中被接受的答案的代码),但我个人不会相信我的应用程序完全自动化。
此外,我可能会逐个进行转换。换句话说,首先要将ASPX -> Razor或MVC2 -> MVC4进行转换,并确保一切都可以与您的转换正常工作。然后再转换另一个,以便如果遇到任何问题,您就不必尝试弄清楚是版本升级还是语法升级导致了问题。

你能详细解释一下“从ASPX转换到Razor必须手动完成”的意思吗? - Sampath
我的意思是你需要将每个文件从.aspx扩展名转换为.cshtml扩展名,然后手动更改文件中的标记,从ASPX语法更改为Razor语法。 - Scott
@Sampath 目前你有一堆 aspx 文件;aspx 和 cshtml 有不同的语法(对于那些不仅仅是 HTML 标记的位)。因此:有人(也就是“你”)需要逐个查看并更改每个视图中的代码。 - Marc Gravell
我不确定我赞成“创建一个新的MVC4项目”的方法...我们只是使用了一个新的MVC4项目来复制web.config /引用/等等 - 但我们更新现有项目时没有遇到任何问题。 - Marc Gravell
我基于微软推荐的从MVC3到MVC4的“最简单”方法回答(http://www.asp.net/whitepapers/mvc4-release-notes#_Toc303253806)。该页面引用:“升级的最简单方法是创建一个新的ASP.NET MVC 4项目,并将所有视图,控制器,代码和内容文件从现有的MVC 3项目复制到新项目中,然后更新新项目中的程序集引用以匹配您正在使用的任何非MVC模板包含的程序集。” - Scott
如果在不创建新项目的情况下,将项目升级到MVC 4并且能够正常工作,那将是更简单的方法。 - Scott

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接