Я ссылаюсь на ссылку на статью
Чтобы динамически создать UserControl и передать его обратно на страницу через jQuery.
Когда я просто делаю простой текст в пользовательском элементе управления "Hello World", все работает отлично ... однако, когда я попытался поместить интерактивные элементы управления на элемент управления, я получил следующее сообщение в своем WebMethod (так что материал вызова jQuery не имеет значения) (дальнейшее тестирование показало, что текстовые поля и кнопки вызывают проблему, но не надписи)
Ошибка выполнения дочернего запроса для обработчика 'System.Web.UI.Page'
вот вебметод:
[WebMethod]
public static string GetCtrl(string cname)
{
StringWriter sw = new StringWriter();
Page p = new Page();
Control c = p.LoadControl("~/Controls/" + cname);
p.Controls.Add(c);
try
{
HttpContext.Current.Server.Execute(p, sw, false);
}
catch (Exception err)
{
return err.Message;
}
sw.Close();
return sw.ToString();
}
Исключение происходит во время вызова Server.Execute.
Решение может быть невозможным, я просто хотел бы знать, почему это вызвано интерактивными элементами управления.
EDIT:
Следуя совету ниже, я посмотрел глубже и обнаружил, что внутреннее исключение говорит о том, что оно должно быть внутри тега формы, помеченного runat = "server", в то время как этот элемент управления отображается на странице aspx внутри тега формы ... Я предполагаю, что там должно быть какое-то «магическое» соединение asp.net, чтобы элемент управления работал… независимо от того, было бы неплохо знать, как отобразить страницу с элементами управления в любом случае (даже если она не может быть использован в этой ситуации)
Итак, я посмотрел на вывод приведенного выше кода и для любопытных:
<span id="ctl00_lbl1">abc: </span>
Таким образом, элемент управления отображается правильно (только с меткой id = 'lbl1') на странице, однако элемент управления отображается, а содержимое страницы вообще отсутствует ... Есть ли способ создать источник страницы, а? (Я не должен понимать, как работает функция Server.Execute)