2009-09-21 14 views
0

我有UserControl,我需要添加(生成)一些標籤,基本上是輸入標籤。稍後回發時,我需要從這些輸入中收集值。我使用Render方法來生成輸入,但我不知道如何從Postback上的這些輸入中獲取值。我確實有每個輸入的唯一ID。如何從render方法中創建的用戶控件獲取回發值?

代碼形式Render方法:

writer.Write(string.Format("<p>{0}</p>", Resources.CustomControls.inpCodeRestriction)); 
writer.RenderBeginTag(HtmlTextWriterTag.P); 
writer.RenderBeginTag(HtmlTextWriterTag.Span); 
writer.Write(product.Name); 
writer.RenderEndTag(); 
TextBox tb = new TextBox(); 
tb.ID = string.Format("code{0}{1}", item.Id, item.ProductId); 
tb.Text = string.Empty; 
tb.ToolTip = Resources.CustomControls.titCodeRestriction; 
tb.RenderControl(writer); 
writer.RenderEndTag(); 

我怎樣才能輸入上回發的值。我試過Page.FindControl(),但它不適合我。

感謝您的任何建議。

回答

0

你沒有。如果您使用WebForms,則應該在CreateChildControls方法中創建您的子控件。

+0

我按照你的建議使用了CreateChildControls。我想到了。謝謝。無論如何,我不知道我採取原創的方法是最壞的還是更好的。我想這可能會工作,如果我從Request.Form集合中獲取值,如下所述。 CreateChildControls也處理兩次,這需要一些額外的工作。 – 2009-09-21 16:52:06

+0

如果您不使用CreateChildControls方法,則可能不應使用WebForms。看看MVC! – erikkallen 2009-09-21 18:40:01

0

Page.FindControl不起作用,因爲控件正在顯式渲染(即它們沒有被添加到Page.Controls集合中)。

您可以檢查名爲id_value的鍵的Request.Forms集合,其中id是控件的名稱。此集合包含來自WebForms的發佈數據。

相關問題