一个页面只能有一个服务器端的Form标签

时间:2011-05-16 20:01:19

标签: c# asp.net forms master-pages

我已经阅读了其他结果,但没有解决我的问题。

我意识到有两个带有runat =“server”的表单标签不起作用。我的问题是我需要Master Page文件中的表单来处理菜单等,而我的应用程序的'child'页面也需要一个表单标签来处理它的操作。

我试图删除“子”页面中的表单标记,但代码隐藏并没有看到我在主页面中使用表单标记。因此,编译失败(“当前上下文中不存在名称'form1'”)

我如何才能达到保持母版页中的菜单正常工作的目标,同时保持“儿童”页面在编译时不会出错?

1 个答案:

答案 0 :(得分:4)

如果您从所有子页面(我建议)中删除所有表单标记的路径,您可以添加对母版页的Form标记的引用作为子页面可以访问的属性。这将是背后的母版页代码:

public HtmlForm form1 {
    get { return this.form1; }
}

然后您可以从子页面引用:

public void MyMethod() {
    HtmlForm theForm = ((MyMasterPageType)this.Master).form1;
    theForm.Controls.Add(...);
}

如果在子页面中设置MasterPageType,则可以使用this.Master.form1引用目录(将其添加到子页面的标记页面):

<%@ MasterType TypeName="MyMasterPageType" %>