C# ASP.NET动态负载控制

C# ASP.NET动态负载控制,c#,asp.net,C#,Asp.net,我使用以下代码从HttpHandler动态加载用户控件 StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); HtmlTextWriter htw = new HtmlTextWriter(sw); Page newPage = new Page(); newPage.EnableEventValidation = false; newPage.LoadControl("~/App_Cont

我使用以下代码从HttpHandler动态加载用户控件

StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
HtmlTextWriter htw = new HtmlTextWriter(sw);
Page newPage = new Page();
newPage.EnableEventValidation = false;
newPage.LoadControl("~/App_Controls/Site/Player/PlayerProfile2.ascx").RenderControl(htw);
var content = sb.ToString();
PlayerProfile用户控件已成功加载,但它似乎没有执行设置用户控件中字段值的代码,即

<div class="content">

<div>
<p>Use the fields below to change your personal details.</p>
<label for="email">Name:</label>
<asp:TextBox CssClass="long" ID="txtProfileName" runat="server" />
<label for="age">Age:</label>
<asp:TextBox ID="txtAge" runat="server" class="tiny" />
<label for="phone">Phone number:</label>
<asp:TextBox ID="txtPhone" runat="server" />
<label for="gender">Gender:</label>
<br />
<asp:DropDownList ID="ddlGender" />
</div>

txtProfileName.Text = "Test";
txtProfileEmail.Text = player.Email;
var genders = new Dictionary<string, string>();
genders.Add("0", "Male");
genders.Add("1", "Female");
ddlGender.DataSource = genders;
ddlGender.DataBind();

使用以下字段更改您的个人详细信息

姓名: 年龄: 电话号码: 性别:
txtProfileName.Text=“测试”; txtProfileEmail.Text=player.Email; var genders=新字典(); 性别。添加(“0”、“男性”); 性别。添加(“1”、“女性”); ddlGender.DataSource=性别; ddlexgender.DataBind();
我已经尝试过在调试模式下使用断点运行,它正在动态加载用户控件的PageLoad

谢谢


Sean

您应该在init上添加控件,而不是加载。否则,控件将不会参与viewstate,事件也不会正确连接。这是一个古老但有效的示例,它可以完成您正在尝试的操作