我已经阅读了其他结果,但没有解决我的问题。
我意识到有两个带有runat =“server”的表单标签不起作用。我的问题是我需要Master Page文件中的表单来处理菜单等,而我的应用程序的'child'页面也需要一个表单标签来处理它的操作。
我试图删除“子”页面中的表单标记,但代码隐藏并没有看到我在主页面中使用表单标记。因此,编译失败(“当前上下文中不存在名称'form1'”)
我如何才能达到保持母版页中的菜单正常工作的目标,同时保持“儿童”页面在编译时不会出错?
答案 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" %>