Мне нужно получить HTML-код пользовательского элемента управления.Получить контроль пользователя HTML
На данный момент я использую код ниже.
// Approach 1
HeaderControl hControl = new HeaderControl();
StringBuilder b = new StringBuilder();
HtmlTextWriter h = new HtmlTextWriter(new StringWriter(b));
hControl.RenderControl(h);
string controlAsString = b.ToString();
// controlAsString is "" -- Doesn't work
// ----------------------------------------------
// Approach 2
UserControl uc = new UserControl();
HeaderControl hc = (HeaderControl)uc.LoadControl("~/Views/HeaderControl.ascx");
hControl.RenderControl(h);
string controlAsString = b.ToString();
// controlAsString = "<h3>test data</h3> - Works.
Можете ли вы объяснить, как я могу добиться этого с помощью подхода 1, так что я не должен жестко закодировать виртуальный путь управления.
Я также попробовал другую перегрузку uc.LoadControl()
UserControl uc = new UserControl();
HeaderControl hControl = (HeaderControl)uc.LoadControl(typeof(HeaderControl), null);
// Header control has a default constructor that takes no parameters
// but no luck :(
Спасибо, Хосе, но не повезло. var hControl = new HeaderControl(); var strWriter = new System.IO.StringWriter(); var htmlWriter = new System.Web.UI.HtmlTextWriter (strWriter); hControl.RenderControl (htmlWriter); Строка ControlAsString = strWriter.ToString(); ControlAsString по-прежнему "" – Menol
Ну, я только что попробовал тот же код здесь, с новым созданным элементом управления, и он работал, как ожидалось, возвращая ''. Вы уверены, что ваш контроль фактически возвращает любой html из рендеринга? Не могли бы вы попробовать протестировать код в своей среде с помощью нового созданного элемента управления? – jose
Да, Jose, Control работает, когда я использую путь для вызова. Я думаю, проблема в том, что элемент управления не загружается только потому, что он был создан. Не могли бы вы проверить свой код, чтобы убедиться, что вы делаете что-то еще, чтобы «загрузить» компонент. Если я могу спросить, можно ли отправить полный код (связанный)? – Menol