2017-06-21 126 views
0

我使用C#與ASP.NET。我有一些我在HTML中創建的標籤控件。我希望能夠遍歷每個這些標籤並使用C#更改文本。我嘗試使用下面的代碼,在這裏我通過一個字符串數組(每個項代表標籤的ID),然後使用FindControl函數獲取具有特定ID的標籤,然後更改其文本。但是,當運行代碼時,我得到了以下錯誤:C#:循環遍歷標籤ID(字符串)和更改標籤文本

System.InvalidCastException: Unable to cast object of type 'System.Web.UI.HtmlControls.HtmlGenericControl' to type 'System.Web.UI.WebControls.Label'

我的代碼如下:

Default.aspx中:

<body> 
    <label id="label1" runat="server"></label> 
    <label id="label2" runat="server"></label> 
    <label id="label3" runat="server"></label>  
</body> 

在default.aspx.cs:

// below labels already created in default.aspx using HTML (as seen above) 
String[] arr = {"label1", "label2", "label3"}; // each item is label's id 

foreach (String item in arr) 
{ 
    Label lbl = (Label)FindControl(item); 
    lbl.Text = "new text"; 

} 
+5

想想也許你想要''而不是'

+0

[從名稱後面的代碼中查找標籤並設置標籤文本]的可能重複(https://stackoverflow.com/questions/19538777/find-label-by-name-and-set-label-text-from-code-背後) – Pikoh

回答

1

將控件從標籤更改爲ASP:標籤修復了問題。