powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить HTML-код контрола?
23 сообщений из 23, страница 1 из 1
Как получить HTML-код контрола?
    #32635137
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как получить HTML-код контрола?

при попытке сказать примерно-упрощенно следующее:

Код: plaintext
1.
2.
3.
4.
            Control = new Control();
            StringWriter sw = new StringWriter();
            HtmlTextWriter htmlWriter = new HtmlTextWriter(sw);
            Control.Render(htmlWriter);
            return sw.ToString();

возникает обшибка:

Control "" of type "" must be placed inside a form tag with runat=server.

Что делать???

Заранее сенкс
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635227
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlaceHolder1.Controls.Add(new LiteralControl(sw.ToString()));

PlaceHolder1 соответсвенно поместить на форму
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635263
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, формы нету. Как это и не странно звучит, но так получилось. Вопрос в другом, можно, например, вообще не обращаясь к странице, получить код контрола? Зачем вообще контролу где-то лежать, чтоб отрисовать себя??? А если надо где-то лежать, то как его обмануть (еще раз скажу, что обычной формы нету).
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635301
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то все не очень понятно:
что значит нет формы ?
что значит не обращаясь к странице ?
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635305
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, формы нету. Как это и не странно звучит, но так получилось. Вопрос в другом, можно, например, вообще не обращаясь к странице, получить код контрола? Зачем вообще контролу где-то лежать, чтоб отрисовать себя??? А если надо где-то лежать, то как его обмануть (еще раз скажу, что обычной формы нету).
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635319
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сори за предыдущий пост =) refresh неудачно нажал =)

А проблема такая. Мне нужен просто код, который получится при отрисовке элемента управления. Я его хочу послать с помощью xmlhttp на клиента. Но во время обработки запроса xmlhttp я не хочу "поднимать" всю страницу, а хочу где-нить в BeginRequest создать контрол и отрендерить его.

Понятнее? если нет - еще поясню
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635322
maxapet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно, и весьма, что формы нет.
Насколько я знаю, форма необходима! Без неё просто не будет работать. В принципе!
И что значит "получить код контрола"? Вообще-то, программист должен его создать. А уж система выведет. А если код чужого контрола нужен, то его можно посмотреть в IE чере Вид->Просмотр HTML-кода. А иначе - дизассемблировать нужно, но не зпавидую...
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635356
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то задача все равно смутно представляеся.
А почему нельзя напрямую "ручками" написать html-код?
+ посмотри функцию Response.Flush();
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635357
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотреть код через правую кнопку я умею =).

Вот есть TextBox. У него метод Render. Ему передается какой-то HTMLTextWriter. Ну зачем, спрашивается, ему форма, если надо в этот HTMLTextWriter записать
Код: plaintext
<input type="text" value="dsf" onclick="dsf">

А если форма нужна стопудово, то нельзя ли ее как-нить ему подсунуть. Что-то типа
Код: plaintext
HtmlForm form = new HtmlForm() ...
Проблема только в том, как осуществить это подсовывание... Я уж и так и этак подбирался, а все не рисуется.
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635360
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profilкак-то задача все равно смутно представляеся.
А почему нельзя напрямую "ручками" написать html-код?
+ посмотри функцию Response.Flush();

Нельзя, потому что контролы есть ОЧЕНЬ сложные, некоторые самопально-отнаследованные, некоторые стандартные, некоторые... Короче, нельзя, чтоб логика так разъезжалась. Пущай контрол сам рисует =)
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635370
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ладно, есть сложные серверные контролы. и куда ты их хочешь отрендерить? на html-страницу что-ли???
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635374
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profilладно, есть сложные серверные контролы. и куда ты их хочешь отрендерить? на html-страницу что-ли???
Мне просто нужна строка с HTML-кодом. Я уже писал, что я пошлю ее на клиента и там уже с этим кодом что-нибудь сделаю. Например, подменю какой-нибудь контрол, используя свойство outerHtml.

Нужна строка! =)
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635435
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а StringWriter.ToString() что не строка, что-ли?
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635529
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
greenappleа StringWriter.ToString() что не строка, что-ли?
Дык он ошибку кидает:
Код: plaintext
Control "lalala" of type "blablabla" must be placed inside a form tag with runat=server.
в процессе рендера =((((
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635546
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и запихни в <form runat=server></form>
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635610
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profilну и запихни в <form runat=server></form>
Да ну тебя!!!

Чай не дети =). Я же говорил уже, что нет формы. И генерится контрол на Application_BeginRequest.
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635650
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так сделай "<form runat=server>"+sw.ToString()+"</form>", а дальше уже обманывай
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635668
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profilтак сделай "<form runat=server>"+sw.ToString()+"</form>", а дальше уже обманывай
Сорри, не надо было говорить "Да ну тебя" =)

Здесь все хитрее =) На BeginRequest нет еще страницы. Есть только ее адрес =). И ОЧЕНь не хоцца поднимать всю страницу ради одного мааааленького контрольчика. Тем более фиг знает какой контрол потребуется, приходит только его название =). Вот такие пирогИ.
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635674
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
profilтак сделай "<form runat=server>"+sw.ToString()+"</form>", а дальше уже обманывай
И вообще, то, что ты предлагаешь как-то странно.. Что значит строчка "<form runat=server>"+sw.ToString()+"</form>"? кому ее присваивать? Сам то понял?
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635753
Фотография profil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Kanzhelev Что значит строчка "<form runat=server>"+sw.ToString()+"</form>"? кому ее присваивать?да без понятия.
ты же пытался вставить куда-то то, что возвращает return sw.ToString();
так сделай return "<form runat=server>"+sw.ToString()+"</form>";

На самом деле, я не очень уверен в правильности выбора метода решения имеющейся задачи. (метод понятен, а задача, которую ты хочешь решить этим методом не известна)

Удачи =))
зы. все гениальное - просто
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635760
Фотография greenapple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще-то все должно работать,

В принципе я попробовал по разному, везде нормально работает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class CustomApplication: System.Web.HttpApplication {

public CustomApplication ( ) : base() {
base.BeginRequest += new EventHandler(this.CustomApplication_BeginRequest);
}

public void CustomApplication_BeginRequest (Object sender, EventArgs e) {

System.Web.UI.WebControls.Button b = new System.Web.UI.WebControls.Button();
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWriter = new System.Web.UI.HtmlTextWriter(sw);
b.RenderControl(htmlWriter);
Context.Response.Write(sw.ToString());
}}

}

может быть где-то вызывается метод VerifyRenderingInServerForm, можно в приницпе унаследоваться и переопределить, хотя
это лишнее.

вот еще почитай

http://aspnet.4guysfromrolla.com/articles/102203-1.aspx
http://www.asp101.com/articles/matt/progressbar/default.asp
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635824
andrejG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да должно.
Я когда свои контролы писал, смотрел что они там рендеряд в консоли.
Щас попробовал с Button
Код: plaintext
1.
2.
3.
HtmlTextWriter w = new HtmlTextWriter(Console.Out);
Button btn = new Button();
btn.RenderControl(w);
Прекрасно отрисовался.
М.б. Вы создаете Page и свой контрол к нему добавляете, тогда срабатывает VerifyRenderingInServerForm. А если свойство Page контрола null, то этот метод не вызывается, по крайней мере в правильно написанных контролах.
...
Рейтинг: 0 / 0
Как получить HTML-код контрола?
    #32635868
Sergey Kanzhelev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое всем!!!
Супер!!!
Все заработало. Надо было просто этод метод переопределить!!! Спасибо.

=) +) :) Как я счастлив!!!

Одной проблемой меньше =)
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Как получить HTML-код контрола?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]