2010-04-01 14 views
0
使用的FindControl一個HTML控件

我選擇控件添加到ASPX頁面如下圖所示:查找ASP.NET

hgc = new HtmlGenericControl(); 
hgc.InnerHtml = @"<select runat='server' id='my_selectlist'> \ 
        <option value='volvo'>Volvo</option> \ 
        <option value='saab'>Saab</option> \ 
        <option value='mercedes'>Mercedes</option> \ 
        <option value='audi'>Audi</option> \ 
       </select>"; 

然後在一個按鈕單擊事件,我用下面的代碼,試圖獲得的價值選擇

HtmlSelect s = (HtmlSelect)hgc.FindControl("my_selectlist"); 
label.Text = s.Value; 

我得到一個錯誤:「對象引用不設置到對象的實例。」 有誰之前嘗試嗎?

問候

回答

2

HTML =服務器控件:)

但是,您可以通過獲得的價值:如果你想將它接入編程Request["my_Selectlist"];取而代之的是GenericControl的,你需要創建一個HtmlSelect control代替並添加項目。

實施例:

var sl = new HtmlSelect(); 
sl.ID = "my_selectlist"; 
sl.Items.Add(new ListItem("Volvo", "volvo")); 
sl.Items.Add(new ListItem("Saab", "saab")); 
sl.Items.Add(new ListItem("Mercedes", "mercedes")); 
sl.Items.Add(new ListItem("Audi", "audi")); 
1

這裏的InnerHtml值將實際上是所呈現的內部HTML,所以RUNAT服務器將只是顯示爲任何其他屬性(儘管一個無效的一個),而不是作爲一個線索.NET來處理它。

嘗試是這樣的:

hgc = new HtmlGenericControl(); 
hgc.TagName = "select"; 
hgc.ID = "my_selectlist"; 
hgc.InnerHtml = @"<option value='volvo'>Volvo</option> \ 
       <option value='saab'>Saab</option> \ 
       <option value='mercedes'>Mercedes</option> \ 
       <option value='audi'>Audi</option>"; 
0

這會工作,如果你已經把HTML到實際的頁面,然後RUNAT設置=「服務器」

的問題,把它一個HtmlGenericControl內.InHeHtml是整個事情只是得到輸出 - 如果你看看視圖源,你會看到它說runat =「服務器」在那裏。

在頁面被解析並且跑步已經被處理後輸出它