我一直在尝试使用现有的ASP.NET Webforms应用程序并将其转换为混合,以便继续,我们可以做ASP.NET MVC。
为了做到这一点,我创建了一个ASP.NET MVC应用程序,并开始从包含webforms的ASP.NET webforms项目中复制一些文件夹。我在构建生成的项目时出现问题,导致此表单出现数百个编译错误:
Error 1951 'Documents_Admin_DocPushByTag' does not contain a definition for
'CtlCategoryList' and no extension method 'CtlCategoryList' accepting a first argument
of type 'Documents_Admin_DocPushByTag' could be found (are you missing a using directive
or an assembly reference?)
这些错误消息中的每一个都引用了我的标记中的服务器控件。这就好像标记没有被解析?当我编辑其中一个代码并输入 this。以查看intellisense识别的内容时,这些控件不会出现。事件处理程序可以(但必须是因为它们是在代码隐藏文件中定义的)。据我所知, CodeFile 和继承页面属性是正确的(并且与ASP.NET项目无关)。我对导致这个问题的原因感到困惑。有任何想法吗? TIA。
答案 0 :(得分:4)
了解斯科特·汉塞尔如何做到这一点:
http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx
basicallly,您将使用ignoreroute排除所有网络表单被路由到mvc处理程序
答案 1 :(得分:3)
我认为您可以更轻松地将System.Web.Mvc程序集添加到当前项目并更新web.config文件和global.asax。
您必须确保当前的应用程序是Web应用程序(而非站点)项目。如果它没有转换它并确保它首先编译。