WebUserControlを使えば上手くいくと思います(ボタンで追加していくとこだけ書きますね)
Default.aspx
<%@ Page Title="test" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="HelloWorld._Default" %>
<%@ Register TagPrefix="WebUc" TagName="WebUcControl" Src="WebUserControl1.ascx" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<link rel="stylesheet" href="/Css/AspxStyle.css">
<asp:Panel ID="panel" runat="server">
</asp:Panel>
<asp:Button runat="server" type="button" ID="ins" class="src" OnClick="Unnamed_Click" AutoPostback ="False" Text="追加"></asp:Button>
<div>
</div>
</asp:Content>
Default.aspx.cs
namespace HelloWorld
{
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Session["WebUserControls"] == null)
{
Session["WebUserControls"] = new List<WebUserControl1>();
}
if (Session["WebUserControls"] is List<WebUserControl1> obj)
{
if (!IsPostBack)
{
var addContext = (WebUserControl1)LoadControl("WebUserControl1.ascx");
addContext.Title = "テスト" + (obj.Count() + 1);
obj.Add(addContext);
}
foreach (var i in obj)
{
panel.Controls.Add(i);
}
}
}
protected void Unnamed_Click(object sender, EventArgs e)
{
if (Session["WebUserControls"] is List<WebUserControl1> obj)
{
var addContext = (WebUserControl1)LoadControl("WebUserControl1.ascx");
addContext.Title = "テスト" + (obj.Count() + 1);
obj.Add(addContext);
foreach (var i in obj)
{
panel.Controls.Add(i);
}
}
}
}
}
WebUserControl1.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WebUserControl1.ascx.cs" Inherits="HelloWorld.WebUserControl1" %>
<span class="honbunTxt">
<asp:Label runat="server" ID="title" />
</span>
<asp:TextBox ID="con1" CssClass="Editor" runat="server" value=""></asp:TextBox>
<asp:TextBox ID="cd1" runat="server" CssClass="Dummy" value=""></asp:TextBox>
<button type="button" id="src1" class="src">検索</button>
<asp:Button ID="cl1" runat="server" CssClass="cl" Text="クリア" />
<br />
WebUserControl1.ascx.cs
C#
1namespace HelloWorld
2{
3 public partial class WebUserControl1 : System.Web.UI.UserControl
4 {
5 public string Title { get => title.Text; set => title.Text = value; }
6 protected void Page_Load(object sender, EventArgs e)
7 {
8 }
9 }
10}
とりあえずコントロールを動的に追加するコードのみ書きました
値の保持に関してはSession変数について調べて頑張って実装してください
WebUserControlは使えると便利なのでぜひ調べてみてくださいね