【发布时间】:2013-08-10 21:30:43
【问题描述】:
所以我是开发团队的新人,正在尝试更新“仪表板”类型的页面,这是我们用户的默认登录页面。 default.aspx 页面由 16 个 Web 用户控件 (.ascx) 组成。我被要求在仪表板上添加股票“小部件”,以便用户可以监控我们公司的股票代码。为了允许不同的时间范围(1 天、5 天、3 个月等),我计划在新的 .ascx 中使用菜单(选项卡)。当我尝试使用菜单时,我收到错误“Control 'StockDisplay_StockMenu' of type 'Menu' must be placed inside a form tag with runat=server”。如果我将菜单包装在表单标签中,我会收到 "A page can only one server-side Form tag" 错误。
大多数搜索结果都建议查看母版页,但我们在这里没有使用。我检查了 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>
这是默认的.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>
【问题讨论】:
-
控件不能有表单标签。所以你需要把它去掉。你能展示一个实际的精简页面来展示你是如何将控件放置在其中的吗?
-
Chris - 完全相同的代码(减去表单标签)。如问题中所述,如果我排除表单标签,则会收到一条错误消息,提示我需要它们。
-
我问的是控件进入的页面。它是如何结构化的,你将控件放在哪里,它是否在页面表单元素中?
-
Chris - 此 Web 用户控件位于 default.aspx 页面上。该页面上没有表单标签。一会儿我看看能不能发一下。