所以我是开发团队的新人,尝试更新“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>
答案 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中删除该标记即可解决您的问题。