自定义表单控件中的DropDownList提供了DropDownList'必须放在带有runat = server的表单标记内,

时间:2014-12-29 13:50:40

标签: c# asp.net custom-controls runatserver

我们在应用程序中使用自定义表单控件。当我们尝试在这个自定义表单控件中使用asp下拉列表控件时,我得到了这个给定的异常。但是,当我使用asp文字控件时,我们不会收到此错误。

请建议您是否可以向我提供解决此问题的任何指示。

2 个答案:

答案 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)。