C # пользовательский элемент управления для визуализации других элементов управления - PullRequest
2 голосов
/ 07 июля 2011

Как я могу использовать пользовательский элемент управления для рендеринга других элементов управления? Очевидно, на этапе рендера уже слишком поздно. test работает, так как не содержит , но test2 - это то, что я хочу, чтобы иметь возможность выписывать и отображать правильно

 protected override void Render(HtmlTextWriter writer)
        {
            const string test = @"<a href='http://www.something.com'></a>";
            const string test2 = "<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='www.something.com'>Some Text</asp:HyperLink>";

            writer.Write(test2);
        }

1 Ответ

5 голосов
/ 07 июля 2011

Вы можете переопределить метод CreateChildControls , как показано в этом примере :

protected override void CreateChildControls()
{
    // Add a LiteralControl to the current ControlCollection.
    this.Controls.Add(new LiteralControl("<h3>Value: "));

    // Create a text box control, set the default Text property, 
    // and add it to the ControlCollection.
    TextBox box = new TextBox();
    box.Text = "0";
    this.Controls.Add(box);

    this.Controls.Add(new LiteralControl("</h3>"));
}

Вместо элементов управления literal / textbox вы должны создать экземпляр и добавить элемент управления HyperLink, например:

var link = new HyperLink();
link.NavigateUrl = "...";
link.Text = "...";
this.Controls.Add(link);
...