我偶然发现了我的 asp.net 表单的问题。
在我的表单中,最终用户选择要动态创建的多个文本框,这一切都可以与以下代码配合使用:
protected void txtAmountSubmit_Click(object sender, EventArgs e)
{
int amountOfTasks;
int.TryParse(txtAmountOfTasks.Text, out amountOfTasks);
for (int i = 0; i < amountOfTasks; i++)
{
TextBox txtAddItem = new TextBox();
txtAddItem.ID = "txtAddItem" + i;
txtAddItem.TextMode = TextBoxMode.MultiLine;
questionNine.Controls.Add(txtAddItem);
txtList.Add(txtAddItem.ID);
}
}
然而这也给我带来了一个小问题,稍后在我的表单中单击提交按钮,我将结果发送给需要发送给的指定人员(使用 smtp 电子邮件)。再说一遍,这部分很好,直到我尝试从这些动态创建的文本框中检索文本.
我尝试过的
我尝试过使用这个msdn访问服务器控制ID方法但这不起作用。
我尝试将这些新文本框添加到列表中,但是我不确定当这些文本框中有文本时如何更新它们。因此,我的结果因此返回 null。
- 我还查看了有关 SO 的其他问题,例如this但是它们通常适用于 WPF 或 winforms,而不是我的 asp.net 问题(这通常不是问题,但我不需要从页面中的每个文本框控件获取文本,只需获取动态的文本框控件)创建)。
我还尝试改变我希望能够工作的代码的调用方式:
string textboxesText = string.Join("\n", txtList.Select(x => x).ToArray());
然后在我的连接字符串(电子邮件正文)中我会调用:
textboxesText
问题
由于它们是动态创建的,我发现很难通过它们的 id 来调用它们,例如:txtExampleID.Text,而且我每次都必须将 ID 加一(这样它们就不会相互覆盖),这使得事情变得对我来说有点困难。
我并不是要求代码解决方案,我更喜欢指向正确方向的指针,因为我仍在学习。
总结一下:我需要从动态创建的文本框中获取文本,以将其添加到我的电子邮件正文中。
问题是这些文本框需要重新创造了 in the Load
页面的事件,每次,以便事件和值都可以被挂钩并检索。
我认为,就你的情况而言,最直接的方法是扩展你已经尝试过的想法#1。建个List
这些控件有足够的信息重新创建它们 in Load
,但你需要存储它List
在任一ViewState
or Session
.
ViewState["DynamicControls"] = list;
or
Session["DynamicControls"] = list;
我会用ViewState
如果可以的话,因为当用户离开页面时它会被销毁。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)