一个页面只能有一个服务器端表单标记

本文关键字:有一个 服务器端 表单 一个 | 更新日期: 2023-09-27 17:56:41

我已经阅读了其他结果,但没有特定于我的问题。

我意识到有两个带有runat="server"的表单标签不起作用。 我的问题是我需要母版页文件中的表单来处理菜单等,而我的应用程序的"子"页也需要表单标签来处理其操作。

我尝试删除"子"页中的表单标记,但代码隐藏看不到我在母版页中使用表单标记。 因此,编译失败("名称'form1'在当前上下文中不存在")

如何实现保持母版页中的菜单正常工作的目标,同时防止我的"子"页在编译时出错?

一个页面只能有一个服务器端表单标记

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

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" %>