Есть у меня сервер-контрол. Как можно получить html, в котороый он рендерится?
Конечно на первый взгляд можно использовать
conrol.Render(myWriter);
Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...
Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке.
Как в таком случае поступают?
Здравствуйте, boriq, Вы писали:
B>Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...
, и уберите обратно.
B>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке. B>Как в таком случае поступают?
А так не поступают, явно не самый удачный дизайн. Зачем это понадобилось?
Любая весть изначально благая, просто ты к этому еще не привык
Здравствуйте, boriq, Вы писали:
B>Есть у меня сервер-контрол. Как можно получить html, в котороый он рендерится? B>Конечно на первый взгляд можно использовать
B>
B>conrol.Render(myWriter);
B>
B>Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...
B>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке. B>Как в таком случае поступают?
Добавляют его в форму перед рендерингом. Еще надо убедиться, что все его паренты и он сам видимы (Visible = True).
Здравствуйте, Gollum, Вы писали:
B>>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке. B>>Как в таком случае поступают?
G>А так не поступают, явно не самый удачный дизайн. Зачем это понадобилось?
А каков удачный дезайн? Если мне нужно GridView обновлять без перезагрузки страницы?
Я хочу делать xhttprequest на страницу, а она бы мне возвращала отрендеренный грид. Я б его подставлял в div и всё.
Или строить грид javascript'ом на основе возвращаемого xml — это самый удачный дезайн?
Здравствуйте, boriq, Вы писали:
B>Есть у меня сервер-контрол. Как можно получить html, в котороый он рендерится? B>Конечно на первый взгляд можно использовать
B>
B>conrol.Render(myWriter);
B>
B>Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...
B>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке. B>Как в таком случае поступают?
Мне уже приходилось такое раньше делать.
Надо так
Control cntr = new TextBox();
HtmlTextWriter writer = new HtmlTextWriter(new StringWriter());
cntr.RenderControl(writer);
myDIV.InnerHtml = writer.InnerWriter.ToString();
GollumА так не поступают, явно не самый удачный дизайн.
Нормальный дизайн.
А чтобы не ругалось насчет того, что контрол должен быть вставлен в форму, то:
1. Рендерить контрол
2. Вместо TextBox использовать <input type=text> и т.д.
Здравствуйте, boriq, Вы писали:
B>А каков удачный дезайн? Если мне нужно GridView обновлять без перезагрузки страницы? B>Я хочу делать xhttprequest на страницу, а она бы мне возвращала отрендеренный грид. Я б его подставлял в div и всё. B>Или строить грид javascript'ом на основе возвращаемого xml — это самый удачный дезайн?