用MasterPage是犯的一个小错误

来源:互联网 发布:mac办公软件免费下载 编辑:程序博客网 时间:2024/05/02 21:47

           前一阵做Asp.Net项目,运用到了母板MasterPage,第一次用这东东,倒是出了不少问题,下面这个问题是关于Form的,我在子页中写了一个表单,用于提交数据,结果运行报错:A page can have only one server-side Form tag. 我很闷呐,明明只写了一个Form,哪来多个Form出错,我看了好几遍,也没发现什么错误。

           后来找来Jerry,果然高手,一会儿就查处错误所在。其原因在母版上,看一下这段母版中代码

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage1.master.cs" Inherits="ContractManagement_MasterPage1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">//母版中的From
    <div>
        <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
        //子页编译后所在的位置
        </asp:contentplaceholder>
    </div>
    </form>
</body>
</html>

下面是子页中的代码:

<%@ Page Language="C#" MasterPageFile="~/ContractManagement/MasterPage1.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="ContractManagement_Default" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<form runat=server>        //这是个多余的Form
<input  type="button" value="submit"/>
</form>

</asp:Content>

你应该注意到了,子页中的代码编译后会合到母版中<asp:contentplaceholder id="ContentPlaceHolder1" runat="server">这个位置,也就是说,母版中默认的Form会把子页包含在里面,所以若在子页中写Form,就会变成Form 嵌套Form,所以报上述错误。

我把子页中Form删了以后,系统运行正常了。

 

原创粉丝点击