我們在我們的應用程序中使用自定義窗體控件。當我們嘗試在這個自定義窗體控件中使用asp dropdownlist控件時,我得到了這個例外。但是,當我使用asp文字控制時,我們不會得到這個錯誤。DropDownList在自定義窗體控件中給出'DropDownList'必須放置在窗體標籤內部,runat = server,
請建議您是否可以向我提供任何解決此問題的方法。
我們在我們的應用程序中使用自定義窗體控件。當我們嘗試在這個自定義窗體控件中使用asp dropdownlist控件時,我得到了這個例外。但是,當我使用asp文字控制時,我們不會得到這個錯誤。DropDownList在自定義窗體控件中給出'DropDownList'必須放置在窗體標籤內部,runat = server,
請建議您是否可以向我提供任何解決此問題的方法。
這是因爲當您嘗試添加DropDownList
時,它必須將其添加到from標籤之外,但asp dropdownlist需要一個帶有runat="server"
的表格標籤,因爲它是服務器端控件。
在另一方面你Literal
控制工作,因爲 - 一個Literal
控制代表HTML元素,文本和ASP.NET頁中的任何其他字符串不需要服務器上的處理。
爲了證明這一點,只是儘量在一個WebForm添加此: -
<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
標籤之外。
如果您遇到此問題是因爲您正嘗試編寫在服務器上執行並通過服務/ ajax傳遞的用戶控件,則應該使用System.Web.UI.HtmlControls
而不是System.Web.UI.WebControls
。
例如,在這種情況下,您可以使用HtmlSelect
而不是DropDownList
。
HtmlControls不需要帶有runat=server
參數的表格標籤;但是,它意味着任何與這些控件相關的事件都必須由前端處理(即Javascript)。
所有的asp控件都是服務器端的,這就是爲什麼你需要把它們放到runat =「server」形式標籤上才能在服務器上執行的原因。請用