代码之家  ›  专栏  ›  技术社区  ›  James Hollingworth

混合ASP.NET WebForms/MVC应用程序中的aspnetform问题

  •  1
  • James Hollingworth  · 技术社区  · 14 年前

    我正在构建一个混合的MVC/WebForms应用程序,其中我的MVC视图使用的是ASP.NET WebForms 2母版页。在我决定在我的MVC视图中放置一个表单之前,所有的工作都非常顺利。因为ASP.NET WebForms将整个页面包装在一个表单元素中,而表单中不能有表单,所以我有点卡住了。

    母版页中有大量依赖于回发的旧控件,因此我不能仅禁用它。目前我有一个想法是,所有依赖asp net form表单的控件都在MVC页面的上方,所以我想知道当asp.net关闭asp net form表单标记时是否还有控件?或者有人对我如何解决这个问题有其他想法吗?

    2 回复  |  直到 14 年前
        1
  •  1
  •   metdos    14 年前

    我以前来过这里,但最终还是选择了单独的母版页:

    也许你没有看得太近,但是你确实可以控制在什么地方,以及如何把表格包裹在你的整个容器上。

    [编辑]:更完整的示例:

    <body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder ID="LegacyContentHolder" runat="server">
    
        </asp:ContentPlaceHolder>
    </div>
    </form>
    <asp:ContentPlaceHolder ID="MvcContentPlaceHolder" runat="server">
    
     </asp:ContentPlaceHolder>    
    </body>
    

    当然,您可以将其移动到WebForms内容的适当占位符周围,并将其他占位符放在其范围之外?

    如果在页面上使用,将生成以下标记

    <body>
    <form name="aspnetForm" method="post" action="Test.aspx" id="aspnetForm">
    <div>
     <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"     value="/wEPDwUJNDMyNDU0NjAzZGT01Ocz+ON8w56SI8x7nj2/h8B/4g==" />
     </div>
    
    <div>
    
    
    Web forms behaviour has been generated here, boo
    
    </div>
    </form>
    
    
    MVC content has been generated here, yay
    
    
    </body>
    

    [编辑]

    注意:我已经检查了我们的代码,必须返回几个版本-我们还做了三个母版页,一个用于上面描述的框架,一个具有特定的ASP.NET WebForms内容,一个继承自该内容的MVC内容。

    保持事物的整洁,并为将来将其从WebForms迁移做好准备。

        2
  •  0
  •   Community CDub    8 年前

    shouldn't have a problem ,控制窗体标记在母版页中的位置。你是说在MVC中使用masterpage时,需要尽早关闭它的表单标记,并将其保留在webforms的位置上吗?当我在使用两个主控形状之前完成这项工作时,您可能需要处理控制树,尽管您可能能够避免抽象一个公共对象 base.master 然后有 mvc.master webforms.master

    推荐文章