Я создал элемент управления веб-пользователей, который имеет некоторые элементы управления ASP.NET и сторонних разработчиков.Как визуализировать клиентскую часть WebUserControl
Я уже проверил свой контроль над разметкой страницы, и она работает хорошо.
<APP:MyControl ID="myControl1" InitializeWithValue="Employee" />
<APP:MyControl ID="myControl2" InitializeWithValue="Supplier" />
Теперь я хочу, чтобы этот элемент управления отображался на той же странице, но не тогда, когда страница отображается в первый раз. Фактически, я нажму кнопку, которая вызовет обратный вызов, и в этот момент я хочу отобразить элемент управления.
Я пытался сделать что-то вроде этого.
void ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
{
MyControl c1 = new MyControl();
c1.InitializeWithValue = Person.Enum.Employee; //<--CRASH
System.Text.StringBuilder sb = new System.Text.StringBuilder();
System.IO.StringWriter sw = new System.IO.StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(sw);
c1.RenderControl(hw);
return sb.ToString();
}
Тогда на моей стороне клиента приемника
<a href="javascript:void(0);" onclick="testcallback('', '')">Test</a>
<div id="divControls"></div>
<script>
function receiver(arguments, context) {
document.getElementById('divControls').innerHTML = arguments;
}
</script>
Но это аварии в момент инициализации, потому что все внутренние элементы управления в WebUserControl равны нулю. Они не были инициализированы.
Это свойство управления
[Browsable(true)]
public Person.Enum InitializeWithValue
{
get { return this.enumPersonValue; }
set
{
this.enumPersonValue = value;
//Literal control
this.litPersonType.Text = "Employee"; //<-- CRASH because litPersonType is null.
}
}
Некоторые из них могут помочь мне исправить это или предложить мне другой способ визуализации веб-контроль, но на стороне клиента?
Спасибо за ответ. Теперь с LoadControl я могу управлять элементом управления правильно, но что, если моя текущая страница, которая будет удерживать элемент управления, - это страница, которая содержится внутри MasterPage.Master, и я не хочу воссоздать все. –
Забудьте мой вопрос. Я передал свою Page_Load внутри своего элемента управления, и я вызываю его непосредственно в приватном методе. Я пытался контролировать страницу.IsPostBack, которая больше не имеет смысла. Оно работает. Благодарю. –
Я применил первый способ, рекомендованный вами, но знаете ли вы, как разрешить рендеринг элементов управления Telerik? Я получил исключение: «Сценарий« dateInput »не зарегистрирован в управлении скриптом ...» Я просто использую RadDateTimePicker внутри моего WebUserControl, ничего особенного. Я продолжу изучать это, но, возможно, вы знаете, как решить Это спасибо. –