获取“页面只能有一个服务器端表单标记”错误,而不是使用母版页

时间:2013-08-09 00:25:41

标签: asp.net vb.net menu ascx

所以我是开发团队的新人,尝试更新“Dashboard”类型页面,这是我们用户的默认登录页面。 default.aspx页面由16个Web用户控件(.ascx)组成。我被要求在仪表板上添加库存“小部件”,以便用户可以监控我们公司的股票代码。为了允许不同的时间范围(1天,5天,3个月等),我计划在新的.ascx中使用菜单(标签)。当我尝试使用菜单时,我收到错误“控件'类型为'Menu'的StockDisplay_StockMenu'必须放在带有runat = server 的表单标记内”。如果我将菜单包装在表单标签中,我会得到“一个页面只能有一个服务器端表单标签”错误。

大多数搜索结果都建议查看母版页,但我们在这里没有使用。我检查了default.aspx页面,它没有任何表单标签。其他搜索建议删除<头>和<体> .ascx中的标签,我已经完成了,但我仍有问题。

这是我的精简代码,仍会产生错误:

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="UC_StockDisplay.ascx.vb" Inherits="UC_StockDisplay" %>
<%@ Import Namespace="System.Data" %>

<form id="Form1" runat="server">
    <asp:Menu ID="StockMenu" runat="server">
        <Items>
            <asp:MenuItem Text="One Day" />
            <asp:MenuItem Text="Five Days" />
            <asp:MenuItem Text="Three Months" />
            <asp:MenuItem Text="Six Months" />
            <asp:MenuItem Text="One Year" />
        </Items>
     </asp:Menu>
</form>

这是default.aspx:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<%@ Register src="UC_HelpUs.ascx" tagname="HelpUs" tagprefix="uc1" %>
<%@ Register src="UC_ImportantNumbers.ascx" tagname="ImportantNumbers" tagprefix="uc2" %>
<%@ Register src="UC_ImportantLinks.ascx" tagname="ImportantLinks" tagprefix="uc3" %>
<%@ Register src="UC_Printers.ascx" tagname="Printers" tagprefix="uc4" %>
<%@ Register src="UC_WorkOrder.ascx" tagname="WorkOrder" tagprefix="uc5" %>
<%@ Register src="UC_RequestForms.ascx" tagname="UCRequestForms" tagprefix="uc6" %>
<%@ Register src="UC_MiscLinks.ascx" tagname="MiscLinks" tagprefix="uc7" %>
<%@ Register src="UC_Emergency.ascx" tagname="Emergency" tagprefix="uc8" %>
<%@ Register src="UC_Floorplan.ascx" tagname="Floorplan" tagprefix="uc9" %>
<%@ Register src="UC_Directory.ascx" tagname="Directory" tagprefix="uc10" %>
<%@ Register src="UC_Weather.ascx" tagname="Weather" tagprefix="uc11" %>
<%@ Register src="UC_Holiday.ascx" tagname="Holiday" tagprefix="uc12" %>
<%@ Register src="UC_CoreValues.ascx" tagname="CoreValues" tagprefix="uc14" %>
<%@ Register src="UC_MyInfo.ascx" tagname="MyInfo" tagprefix="uc15" %>
<%@ Register src="UC_Travel.ascx" tagname="Travel" tagprefix="uc16" %>
<%@ Register src="UC_StockDisplay.ascx" tagname="StockDisplay" tagprefix="uc17" %>


<!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>IT Helpdesk</title>
</head>
<body style="background-color:#1B5B9D;">

    <center>
    <a href="/"><img src="images\banner2.gif" border=0></a><br>
    <font face="Courier New Bold" size=5 color=white>Helpdesk 3.5</font><br>
    <table width=100% cellspacing=10>
        <tr>
            <td width="33%" valign=top>
                <uc1:HelpUs ID="HelpUs" runat="server" />
                <br>
                <uc3:ImportantLinks ID="ImportantLinks" runat="server" />
                <br>                
                <uc10:Directory ID="Directory" runat="server" />
                <br>            
                <uc6:UCRequestForms ID="UCRequestForms" runat="server"/>
                <br>
                <uc7:MiscLinks ID="MiscLinks" runat="server" />
            </td>
            <td width="33%" valign=top align=center>
                <uc5:WorkOrder ID="WorkOrder" runat="server" />
                <br>
                <uc8:Emergency ID="Emergency" runat="server" />
                <br>
                <uc2:ImportantNumbers ID="ImportantNumbers" runat="server" />
                <br>
                <uc11:Weather ID="Weather" runat="server" />

    <td width="33%" valign=top>
                <uc17:StockDisplay ID="StockDisplay" runat="server" />
                <br />
                <uc9:Floorplan ID="Floorplan" runat="server" />
                <br>
                <uc4:Printers ID="Printers" runat="server" />
                <br>
                <uc15:MyInfo ID="MyInfo" runat="server" />
                <br>
                <uc14:CoreValues ID="CoreValues" runat="server" />
                <br>
                <uc12:Holiday ID="Holiday" runat="server" />
                <br />
                <uc16:Travel ID="Travel" runat="server"></uc16:Travel>
            </td>
        </tr>
    </table>
    </center>


</body>
</html>

1 个答案:

答案 0 :(得分:4)

添加一个控件后,您有一个带有runat =“server”标签的表单:

<form id="Form1" runat="server">
    <asp:Menu ID="StockMenu" runat="server">

您已经提到在一个页面中有16个usercontrol。所以你有16个表格,其中包含runat =“server”标签。这是不允许的。

解决方案:正如Chris Lively建议的那样,从wsercontrols中删除表单标记。在页面中只添加一个表单标记。你应该没事。

以下是所有控件应如何显示:

<asp:Menu ID="Menu1" runat="server">
    <Items>
        <asp:MenuItem Text="One Day" />
        <asp:MenuItem Text="Five Days" />
        <asp:MenuItem Text="Three Months" />
        <asp:MenuItem Text="Six Months" />
        <asp:MenuItem Text="One Year" />
    </Items>
</asp:Menu>

您的网页应如下所示:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<%@ Register src="UC_HelpUs.ascx" tagname="HelpUs" tagprefix="uc1" %>
<%@ Register src="UC_ImportantNumbers.ascx" tagname="ImportantNumbers" tagprefix="uc2" %>
<%@ Register src="UC_ImportantLinks.ascx" tagname="ImportantLinks" tagprefix="uc3" %>
<%@ Register src="UC_Printers.ascx" tagname="Printers" tagprefix="uc4" %>
<%@ Register src="UC_WorkOrder.ascx" tagname="WorkOrder" tagprefix="uc5" %>
<%@ Register src="UC_RequestForms.ascx" tagname="UCRequestForms" tagprefix="uc6" %>
<%@ Register src="UC_MiscLinks.ascx" tagname="MiscLinks" tagprefix="uc7" %>
<%@ Register src="UC_Emergency.ascx" tagname="Emergency" tagprefix="uc8" %>
<%@ Register src="UC_Floorplan.ascx" tagname="Floorplan" tagprefix="uc9" %>
<%@ Register src="UC_Directory.ascx" tagname="Directory" tagprefix="uc10" %>
<%@ Register src="UC_Weather.ascx" tagname="Weather" tagprefix="uc11" %>
<%@ Register src="UC_Holiday.ascx" tagname="Holiday" tagprefix="uc12" %>
<%@ Register src="UC_CoreValues.ascx" tagname="CoreValues" tagprefix="uc14" %>
<%@ Register src="UC_MyInfo.ascx" tagname="MyInfo" tagprefix="uc15" %>
<%@ Register src="UC_Travel.ascx" tagname="Travel" tagprefix="uc16" %>
<%@ Register src="UC_StockDisplay.ascx" tagname="StockDisplay" tagprefix="uc17" %>


<!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 id="Head1" runat="server">
    <title>IT Helpdesk</title>
</head>
<body style="background-color:#1B5B9D;">
<form id="form1" runat="server">
    <%-- your usercontrols and other tags --%>
</form>

编辑:正如您所提到的,其他用户控件没有表单,只需在主页面中添加表单标记并从usercontrol中删除该标记即可解决您的问题。