我正在为用户输入制作一个表单,每次用户点击一个按钮时,都会添加一个新的文本框供他们输入。
我能够毫无问题地创建文本框,但我无法命名它们。他们都需要有不同的名字(否则他们会互相覆盖)所以我想做这样的事情:
string strName = "txt"+counter.toString();
HtmlGenericControl gc = new HtmlGenericControl("li");
InputList.Controls.Add(gc);
TextBox strName = new TextBox();
strName.Text = "hello world"+counter.toString();
gc.addControls.Add(strName);
Vs 不喜欢这样,但我需要能够提供许多自动生成的文本框。关于如何解决这个问题的任何建议,或者你能推荐另一种方式吗?
你为什么需要string strName = "txt"+counter.toString();
?
您可以尝试像这样更改Text
属性,而不是更改TextBox
es 的ID
属性:
HtmlGenericControl gc = new HtmlGenericControl("li");
gc.ID = "li"+counter.toString(); //This is needed to take it later
InputList.Controls.Add(gc);
TextBox strName = new TextBox();
strName.Text = "txtbox"+counter.toString();
gc.addControls.Add(strName);
然后,如果您想从这些TextBox
es 中获取值,您应该使用:
TextBox txtbox = (TextBox)(InputList.FindControl("li1").FindControl("txtbox1"));
var inputText = txtbox.Text; //This contains the text inside the `TextBox`
编辑
正如 Vilx 所提到的,每次你点击添加按钮都会发生一个新的回发,所以你必须想办法TextBox
在回发时加载已经创建的es。最好的方法是input
在前端完全使用 JavaScript/JQuery动态创建字段,并在表单提交时将它们发送回服务器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句