代码之家  ›  专栏  ›  技术社区  ›  Howard Pinsley

将webforms混合到asp.net mvc应用程序中时出现问题

  •  4
  • Howard Pinsley  · 技术社区  · 17 年前

    我一直在尝试使用一个现有的asp.net webforms应用程序,并将其转换为一个混合应用程序,这样我们就可以进行asp.net mvc了。

    为此,我创建了一个asp.net mvc应用程序,并开始从包含webforms的asp.netwebforms项目中复制一些文件夹。我在构建生成的项目时遇到了一个问题,该项目得到了此表单的数百个编译错误:

    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?)
    

    这些错误消息中的每一个都指向我的标记中的服务器控件。好像标记没有被解析?当我编辑一个代码隐藏文件并键入 这个。 要查看IntelliSense识别的内容,这些控件不会出现。事件处理程序是这样做的(但这必须是因为它们是在代码隐藏文件中定义的)。据我所知 代码文件 继承 页面属性是正确的(并且在它们来自的asp.net项目中没有改变)。我搞不清是什么引起了这个问题。有什么想法吗?短暂性脑缺血发作

    2 回复  |  直到 15 年前
        1
  •  4
  •   Joel Martinez    17 年前

    看看Scott Hanselman是怎么做到的:
    http://www.hanselman.com/blog/PlugInHybridsASPNETWebFormsAndASPMVCAndASPNETDynamicDataSideBySide.aspx

    基本上,您可以使用ignoreroute将所有的web表单从路由到mvc处理程序中排除。

        2
  •  3
  •   Kyle West    17 年前

    我认为将system.web.mvc程序集添加到当前项目中并更新web.config文件和global.asax会更容易进行转换。

    必须确保当前应用程序是Web应用程序(而不是网站)项目。如果它不转换它并确保它首先编译。

    推荐文章