我们在应用程序中使用自定义表单控件。当我们尝试在这个自定义表单控件中使用asp下拉列表控件时,我得到了这个给定的异常。但是,当我使用asp文字控件时,我们不会收到此错误。
请建议您是否可以向我提供解决此问题的任何指示。
答案 0 :(得分:0)
那是因为当您尝试添加DropDownList
时,它必须在from标记之外添加它,但asp下拉列表需要一个带runat="server"
的表单标记,因为它是服务器端控件
另一方面,Literal
控件正在运行,因为 - Literal
控件表示HTML页面中的HTML元素,文本和任何其他字符串,不需要处理服务器。
要证明这一点,只需尝试在网络表单中添加: -
<body>
<asp:Literal ID="Literal1" runat="server" Text="Hello"></asp:Literal> //Correct
<asp:DropDownList ID="ddlTest" runat="server"></asp:DropDownList> // Error
<form id="form1" runat="server">
</form>
</body>
Literal
控件不会抛出任何错误,而Dropdownlist
控件会抛出您提到的错误,因为它超出form
标记。
答案 1 :(得分:0)
如果您遇到这种情况,因为您正在尝试编写在服务器上执行并通过service / ajax传递的用户控件,那么您应该使用System.Web.UI.HtmlControls
而不是System.Web.UI.WebControls
。< / p>
例如,在这种情况下,您可以使用HtmlSelect
代替DropDownList
。
HtmlControls不需要带有runat=server
参数的表单标记;但它确实意味着与这些控件相关的任何事件都必须由前端处理(即Javascript)。