Как поставить серверный контроль в Literal? - PullRequest
0 голосов
/ 01 февраля 2012

Я хочу поместить серверный элемент управления в литерал.Является ли это возможным?Если да, то как?Я знаю, что описание класса говорит само за себя:

Представляет элементы HTML, текст и любые другие строки на странице ASP.NET, которые не требуют обработки на сервере

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Если вы хотите использовать код на стороне сервера в других элементах управления, вы, вероятно, хотите использовать Panel.Как уже отмечалось в комментариях, буквальный текст нельзя рассматривать как элемент управления на стороне сервера.

0 голосов
/ 02 февраля 2012

Забавно, но я только что просмотрел вчера мой старый код. Литералы могут сделать это. Первоначально я делал это, чтобы передавать пользовательские элементы управления через вызов веб-службы из Javascript (да, я знаю ... это было весело), ​​но это также будет соответствовать вашим потребностям.

    protected void Page_Load(object sender, EventArgs e)
    {
        litTest.Text = RenderUserControlAsString("WebUserControl1.ascx");
    }

    private string RenderUserControlAsString(string path)
    {
        Page page = new Page();
        UserControl control = (UserControl)page.LoadControl(path);

        //add the control to the page
        page.Controls.Add(control);

        StringWriter sw = new StringWriter();
        HttpContext.Current.Server.Execute(page, sw, true);

        //return the rendered markup of the page, which only has our single user control
        return sw.ToString();
    }

Бросьте ваш литерал на страницу и присвойте его текстовое значение RenderUserControlAsString («Путь к вашему пользовательскому элементу управления»). С учетом сказанного в пользовательском элементе управления вы должны заключить дочерние элементы в элемент управления формы.

<form runat="server"> <asp:TextBox id="txtTest" Text="From User Control" runat="server"  /> </form>

Надеюсь, это поможет!

0 голосов
/ 02 февраля 2012
TextBox myTextBox = new TextBox();
YourLiteralID.Controls.Add(myTextBox);
...