在c#中,如何訪問帶有動態變量名稱的asp:textbox元素?我提供的代碼由於某種原因不工作。方法createContact在按鈕單擊時調用。 我做索姆重構,也許我也應該動態地添加文本域?具有動態名稱的C#ASP.NET訪問文本框?
一些示例代碼:
前:
<asp:TextBox runat="server" ID="OwnerFirstName" class="handleLongField"></asp:TextBox>
<asp:TextBox runat="server" ID="OwnerLastName" class="handleLongField"></asp:TextBox>
<asp:TextBox runat="server" ID="AdminFirstName" class="handleLongField"></asp:TextBox>
<asp:TextBox runat="server" ID="AdminLastName" class="handleLongField"></asp:TextBox>
and more of this kind
後面的代碼:
public bool createContact(CONTACT_ROLES role)
{
String prefix = "";
switch(role)
{
case CONTACT_ROLES.ADMIN :
prefix = "Admin";
break;
case CONTACT_ROLES.OWNER :
prefix = "Owner";
break;
case CONTACT_ROLES.BILLING :
prefix = "Billing";
break;
case CONTACT_ROLES.TECH :
prefix = "Tech";
break;
}
Contact contact = new Contact();
contact.firstName = ((TextBox)this.FindControl(prefix + "FirstName")).Text;
contact.lastName = ((TextBox)this.FindControl(prefix + "LastName").Text;
}
'FindControl'不是遞歸的。意思是,如果您有一個面板並在其中添加控件,您將無法訪問「Page.FindControl」中的該控件。你必須像'this.Page.myPanel.FindControl'那樣做。沒有在masterpage上試過,但也許通過使用'this.Form.FindControl'你可以找到你正在尋找的控件。 – Kamyar 2011-06-09 08:15:45