如何用asp.net <asp:textbox>
和c#做这样的事情? (从而创建一个文本框数组)
HTML:
<input name="Search[]" value="google" />
<input name="Search[]" value="yahoo" />
<input name="Search[]" value="alltheweb" />
PHP:
$array = $_GET['Search']; // or $_POST['Search'];
/*
$array is now an array like:
array(
0 => "google",
1 => "yahoo".
2 => "alltheweb"
)
/*
答案 0 :(得分:4)
由于控件都是强名称的,因此很容易按名称抓取它们,但是如果你需要它们在一个数组中,你可以将控件包装在一个面板中。
你可以做类似的事情:
<div runat="server" id="myPanel">
<asp:TextBox runat="server" id="search1" />
<asp:TextBox runat="server" id="search2" />
<asp:TextBox runat="server" id="search3" />
</div>
Linq:
IEnumerable<string> values = myPanel.Controls.OfType<TextBox>()
.Select(textBox => textBox.Text);
Non Linq:
string[] values = new string[myPanel.Controls.Count];
for(int i = 0; i < myPanel.Controls.Count; ++i)
{
values[i] = (myPanel.Controls[i] as TextBox).Text;
}
已编辑:
如果要动态添加(或只是非asp)输入,那么将输入转换为阵列服务器端实际上会更加容易。
例如,如果您希望页面上有一堆<input type='text' name='search[]' />
,则可以在服务器上执行以下操作将项目转换为字符串数组:
string[] inputValues = Request.Form["search[]"].Split(',');
因此,对于原始示例,提供的等价物将是:
HTML:
<input name="Search[]" value="google" />
<input name="Search[]" value="yahoo" />
<input name="Search[]" value="alltheweb" />
C#:
string[] myArray = Request.Form["search[]"].Split(',');
/*
myArray is now an array like:
0: "google"
1: "yahoo"
2: "alltheweb"
/*
答案 1 :(得分:0)
您也可以像这样创建数组:
TextBox[] textBoxes = new[] { search1, search2, search3 };
<div runat="server" id="myPanel">
<asp:TextBox runat="server" id="search1" />
<asp:TextBox runat="server" id="search2" />
<asp:TextBox runat="server" id="search3" />
</div>
它给出了与Quintin的答案相同的最终结果,但我发现这更容易阅读。