1

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

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

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

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

这是默认的.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>
4

1 回答 1

4

添加一个控件后,您将拥有一个带有 runat="server" 标记的表单:

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

您已经提到您在一页中有 16 个用户控件。所以你有 16 个带有 runat="server" 标签的表单。这是不允许的。

解决方案:正如 Chris Lively 所建议的,从您的 wsercontrols 中去掉 form 标签。在页面中只添加一个表单标签。你应该没事的。

以下是所有控件的外观:

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

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

于 2013-08-09T03:10:06.617 回答