Как добавить пользовательский элемент управления во время выполнения в ASP.NET? - PullRequest
4 голосов
/ 30 января 2012

Как добавить пользовательский элемент управления для динамической загрузки страницы в ASP.NET?

У меня есть div с ID="contentData" и несколькими элементами управления

  • one.ascx
  • two.ascx
  • three.ascx

Теперь я создал страницу default.aspx, которая может получить параметры в строке запроса одним из следующих способов:

default.aspx?val=one  
default.aspx?val=two  
default.aspx?val=three

Я беру значение из

Request.QueryString["val"]

Теперь, как мне загрузить определенный элемент управления в этом?

<div ID="controlData"></div>

Ответы [ 4 ]

15 голосов
/ 30 января 2012

В вашем aspx

<div id="div1" runat="server">

</div>

In Page_Load

    UserControl uc = (UserControl)Page.LoadControl("test.ascx");
    div1.Controls.Add(uc);

Все, что вам нужно сделать, это привязать ваш div-сервер, добавив runat = "server", и в кодовой части используйте Page.LoadControl, чтобы выйти и получить свой usercontrol, а затем добавить его в свой div с помощью элементов управления div.

3 голосов
/ 31 января 2012
// Load the User Control

Control uc = LoadControl("~/MyUserControl.ascx");

// Add the User Control to the Controls collection

Page.Controls.Add(uc);

для получения более подробной информации перейдите по этой ссылке - Обширный анализ пользовательских элементов управления http://msdn.microsoft.com/en-us/library/ms972975.aspx

Также прочитайте использование ~ tidle в .net http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility.aspx

1 голос
/ 30 января 2012

Используйте метод LoadControl страницы, чтобы сделать это программно:

http://msdn.microsoft.com/en-us/library/t9ecy7tf.aspx

Кроме того, если вы хотите добавить его в div, убедитесь, что этот div является серверным элементом управления, добавив runat = "server" в разметку

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

Мне немного непонятно, что вы спрашиваете, так что простите, если это не отвечает на вопрос.

Предполагая, что возможные значения известны заранее, и что число является скромным - как три в вашем примере - проще всего сделать, чтобы включить все элементы управления в форме с "visible = false", а затем в ваш метод Load установлен видимым в true на тот, который вы хотите.

Если количество возможностей очень велико или оно динамическое, так что вы даже не знаете, какие есть возможности во время кодирования, тогда вы можете поместить объект-обертку, скажем, div, и добавить элементы к его "контролю" собственности. Но я бы избегал этого, если это вообще возможно, потому что это было бы очень сложно поддерживать: будущие программисты даже не будут знать, какие элементы управления могут быть на экране.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...