2014-12-29 53 views
2

我們在我們的應用程序中使用自定義窗體控件。當我們嘗試在這個自定義窗體控件中使用asp dropdownlist控件時,我得到了這個例外。但是,當我使用asp文字控制時,我們不會得到這個錯誤。DropDownList在自定義窗體控件中給出'DropDownList'必須放置在窗體標籤內部,runat = server,

請建議您是否可以向我提供任何解決此問題的方法。

+0

所有的asp控件都是服務器端的,這就是爲什麼你需要把它們放到runat =「server」形式標籤上才能在服務器上執行的原因。請用

添加表單標籤給你的html。 –

回答

0

這是因爲當您嘗試添加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標籤之外。

0

如果您遇到此問題是因爲您正嘗試編寫在服務器上執行並通過服務/ ajax傳遞的用戶控件,則應該使用System.Web.UI.HtmlControls而不是System.Web.UI.WebControls

例如,在這種情況下,您可以使用HtmlSelect而不是DropDownList

HtmlControls不需要帶有runat=server參數的表格標籤;但是,它意味着任何與這些控件相關的事件都必須由前端處理(即Javascript)。

相關問題