2013-09-08 8 views
1

У меня есть пользовательский элемент управления. webcontrol.ascxОшибка пользовательского управления пользователем при создании программно

<div runat="server" id="abc"></div> 

в webcontrol.ascx.cs, у меня есть метод, чтобы добавить имя класса

public void ABCmethod(){ abc.Attributes["class"] = "className" }; 

Когда я создаю его в моем default.aspx декларативно, <uc:WebControl runat="server" id=wc1" />, это ABCmethod Безразлично» t исключение.

Но когда я создал его программно,

protected void Page_Load(object sender, EventArgs e) 
    { 
     WebControl wc1 = new WebControl(); 
     wc1.ABCmethod(); 
    } 

это выдает ошибку. Утверждение, что abc - ссылка объекта, не установленная на экземпляр объекта.

+0

Не могли бы вы отправить код, где вы создаете webcontrol? т. е. вы создаете элемент управления при загрузке страницы, а затем пытаетесь получить доступ к методу в другом событии на странице? – Damon

+0

@Damon Я создал программно на другой странице во время события Page_Load. Вы подразумеваете, что я создал wc1, но wc1 еще не выполнил Init или Page_Load, таким образом, я получаю, что div не установлен на объект? – WenHao

ответ

2

Я думаю, вам нужно использовать метод LoadControl из примера here

Более конкретно, вам нужно что-то вроде этого кода:

protected void Page_Load(object sender, EventArgs e) 
{ 
    WebControl myControl = (WebControl)LoadControl("~/Controls/webControl"); 
    myControl.ABCMethod(); 
} 

Вам также нужно добавить элемент управления в элементе управления заполнителем иначе управление не будет видно.

+0

Удивительный, решенный. – WenHao