#c# #asp.net #loadcontrol
#c# #asp.net #loadcontrol
Вопрос:
В этом примере для динамической загрузки пользовательского элемента управления как мне объявить «TimeDisplay»? Можно ли это сделать в коде, или это делается на странице ascx? Это пример из книги, я думаю, есть предположения относительно того, где файлы кода расположены относительно друг друга?
protected void Page_Load(object sender, EventArgs e)
{ TimeDisplay ctrl = (TimeDisplay)Page.LoadControl("TimeDisplay.ascx");
PlaceHolder1.Controls.Add(ctrl);
}
Ответ №1:
Вам нужно добавить ссылку на элемент управления на вашей странице aspx:
<%@ Reference Control="~/Controls_Path/TimeDisplay.ascx" %>
Комментарии:
1. Это может не вызывать ошибок, но как вы планируете ссылаться на элемент управления в разметке?
Ответ №2:
Чтобы объявить элемент управления в разметке, вам нужно зарегистрировать элемент управления в директиве page или в web.config
. Регистрация элементов управления в web.config
обычно предпочтительнее, потому что вы можете использовать элемент управления в любом месте приложения.
Метод конфигурации:
<pages>
<controls>
<add tagPrefix="uc1" src="~/controls/myusercontrol.ascx" tagName="myusercontrol" />
</controls>
</pages>
Метод директивы страницы:
<%@ Register TagPrefix="uc1" TagName="MyUserControl" Src="~/controls/myusercontrol.ascx" %>
Комментарии:
1. Он хочет создать элемент управления «динамически», зачем вам нужно объявлять тег в разметке.