ASP.NET母版页转换后Button控件表单标签报错求助
解决WebForm转MasterPage后按钮不在runat=server表单内的错误
先检查母版页的Form标签结构
母版页必须有且仅有一个带runat="server"的Form标签,而且这个Form得把所有ContentPlaceHolder控件都包起来。比如正确的母版页结构应该是这样:<%@ Master Language="C#" %> <!DOCTYPE html> <html> <body> <form id="form1" runat="server"> <div> <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"> </asp:ContentPlaceHolder> </div> </form> </body> </html>别把ContentPlaceHolder放到Form标签外面,这是最容易犯的错。
检查内容页(Menu.aspx)的控件放置
内容页里所有需要回发的服务器控件(比如你的btnMains按钮)必须放在<asp:Content>控件里面,而且这个Content控件得对应母版页的ContentPlaceHolderID。
要是按钮直接写在Content标签外面,或者Content标签没正确关联母版页的ID,就会触发错误。正确的内容页结构示例:<%@ Page Title="" Language="C#" MasterPageFile="~/YourMasterPage.master" AutoEventWireup="true" CodeFile="Menu.aspx.cs" Inherits="Menu" %> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"> <!-- 所有服务器控件都得放在这里面 --> <asp:Button ID="btnMains" runat="server" Text="主菜单" OnClick="btnMains_Click" /> </asp:Content>排查其他可能的问题
- 看看内容页里是不是不小心加了额外的
runat="server"的Form标签,哪怕是隐藏的也得删掉。 - 如果用了嵌套母版页,得确保最顶层母版页的Form标签把所有子母版页的ContentPlaceHolder都包起来了。
- 右键项目选「清理」,然后重新生成项目,有时候缓存的旧文件会搞出奇怪的错误。
- 看看内容页里是不是不小心加了额外的
内容的提问来源于stack exchange,提问作者Elfi
相关产品推荐
相关产品推荐

