Программно загрузить UserControl со ссылкой в ​​web.config - PullRequest
0 голосов
/ 21 января 2012

Я регистрирую usercontrols в Web.config, как показано ниже.Как мне динамически загрузить usercontrol с заголовком тэга из кода в заполнитель?Я пользуюсь ASP.NET 4.0

<configuration>
  <system.web>
    <pages>
      <controls>
        <add tagPrefix="blogUc" src="~/Controls/Header/Header.ascx" tagName="header"/>
      </controls>
    </pages>
  </system.web>
</configuration>

Ответы [ 3 ]

0 голосов
/ 21 января 2012

Вы можете программно читать раздел страницы из web.config и загружать нужные элементы управления.

Ссылка: http://msdn.microsoft.com/en-us/library/system.web.configuration.tagprefixcollection.aspx

Вот код, который может вам помочь. (примечание - это цикл по всем коллекциям элементов управления, что может быть проблемой производительности, если у вас длинный список элементов управления)

PagesSection pagesSection = (PagesSection)WebConfigurationManager.GetWebApplicationSection("system.web/pages");

foreach (TagPrefixInfo tag in pagesSection.Controls)
{
    if (tag.TagName == "header")
    {
        UserControl userControl=  (UserControl) Page.LoadControl(tag.Source);
        PlaceHolder1.Controls.Add(userControl);
        break;
    }
}
0 голосов
/ 22 января 2012

Вызовите метод TemplateControl.ParseControl:

Control control = TemplateControl.ParseControl("<blogUc:header runat='server' />");
this.placeHolder.Controls.Add(control);
0 голосов
/ 21 января 2012

Вот хорошая статья Как программно создавать экземпляры ASP.Net UserControls. не забудьте поместить ссылку на пространство имен, в котором находится UserControl, в файл кода кода.

// Reference to namespace in Code-Behind file
using MyNamespace.UserControls;

// In code behind class
protected MyUserControl userControl1 = null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...