asp:文本框数组

时间:2009-09-22 23:57:05

标签: asp.net arrays textbox

如何用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"
)
/*

2 个答案:

答案 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的答案相同的最终结果,但我发现这更容易阅读。