リンク ボタンを動的に作成したら、ページのビュー ステートにフラグを設定します。フラグがビュー ステートに設定されている場合は、ポストバック時にリンク ボタンを再作成します。ここにデモがあります:
マークアップ:
<asp:Button runat="server" ID="button1" OnClick="button_Click" Text="Create button A" CommandArgument="A" />
<asp:Button runat="server" ID="button2" OnClick="button_Click" Text="Create button B" CommandArgument="B" />
<asp:PlaceHolder runat="server" ID="placeHolder"></asp:PlaceHolder>
分離コード:
public partial class Default : System.Web.UI.Page
{
    private bool LinkButtonCreated
    {
        get { return ((bool?)this.ViewState["LinkButtonCreated"]).GetValueOrDefault(); }
        set { this.ViewState["LinkButtonCreated"] = value; }
    }
    private string LinkButtonCommandArgument
    {
        get { return (string)this.ViewState["LinkButtonCommandArgument"]; }
        set { this.ViewState["LinkButtonCommandArgument"] = value; }
    }
    protected override void LoadViewState(object savedState)
    {
        base.LoadViewState(savedState);
        if (this.LinkButtonCreated)
            this.CreateLinkButton(this.LinkButtonCommandArgument);
    }
    protected void button_Click(object sender, EventArgs e)
    {
        if (!this.LinkButtonCreated)
        {
            string commandArgument = ((Button)sender).CommandArgument;
            this.LinkButtonCreated = true;
            this.LinkButtonCommandArgument = commandArgument;
            this.CreateLinkButton(commandArgument);
        }
    }
    private void CreateLinkButton(string commandArgument)
    {
        LinkButton linkButton =
            new LinkButton
            {
                ID = "linkButton",
                Text = "Click me",
                CommandArgument = commandArgument,
            };
        linkButton.Click += this.linkButton_Click;
        this.placeHolder.Controls.Add(linkButton);
    }
    private void linkButton_Click(object sender, EventArgs e)
    {
        LinkButton linkButton = (LinkButton)sender;
        linkButton.Text = "I was clicked! Argument: " + linkButton.CommandArgument;
    }
}