Asp.net 像PHP一样使用Request.Form处理HTML输入元素数组

Asp.net 像PHP一样使用Request.Form处理HTML输入元素数组,asp.net,Asp.net,如何在asp.net上正确接收这些输入数组 <input type=hidden name='field[name][]' value='alex' /> <input type=hidden name='field[name][]' value='mark' /> <input type=hidden name='field[name][]' value='helen' /> <input type=hidden name='field[age][]

如何在asp.net上正确接收这些输入数组

<input type=hidden name='field[name][]' value='alex' />
<input type=hidden name='field[name][]' value='mark' />
<input type=hidden name='field[name][]' value='helen' />

<input type=hidden name='field[age][]' value='22' />
<input type=hidden name='field[age][]' value='30' />
<input type=hidden name='field[age][]' value='29' />

在php中,您可以通过
$field=$\u POST[“field”]


$field[“name”]
$field[“age”]
只是包含名称和年龄的数组。

这些是而不是输入数组。HTML没有数组的概念

这些只是具有相同名称的输入组

你想达到什么目标?为什么不使用服务器端控件


更新:

您可以访问
Request.Forms
集合-它将保存已发布的表单元素


或者,使用服务器端控件—您可以通过ID访问这些控件。

您可以使用标准的字符串拆分—这就是php在幕后为您所做的一切。然而,PHP不是强类型语言,这意味着它们更容易提供此功能的“外观”

事实上,php只允许您提供逗号分隔的输入,它会自动为您拆分输入

所以。。。如果要在asp.net中执行此操作,可以多次使用相同的输入名称,并且该名称将与请求对象一起作为逗号分隔的列表返回。我不建议对用户输入的输入使用这种方法,但如果您像将列表合并到jquery脚本中的隐藏输入一样控制输入,那么这种方法会很好地工作

为了了解正在发生的事情(php也是如此..所有web开发技术人员都使用相同的http规则),只需尝试发布一个表单,其中包含两次输入(不要设置runat server)

<input type="text" name="MyTest" value="MyVal1" />
<input type="text" name="MyTest" value="MyVal2" />
你应该看到

MyVal1,MyVal2

在屏幕上

现在,如果要将其放入数组中,可以:

string[] myvals = Request["MyTest"].Split(',');
如果需要整数或其他数据类型(php不知道/不关心数据类型到底是什么),则必须循环遍历它并将其解析到另一个数组/泛型列表中

我不知道你最终想要什么,但了解浏览器发回的内容是第一步,简短的回答是


是的,ASP.NET可以做到这一点(只是手动操作多一点)。

实际上,它确实存在于ASP.NET中你可以用

string[] MyTest = Request.Form.GetValues("MyTest");


嗯,我现在明白了。我改变了问题的主题。因此,PHP确实以一种为您提供一个数组的方式来解释输入。那么asp.net是否有类似的功能,或者我需要编写自己的解释器?关于服务器端控制。。因为我正在开发自己的服务器控件,所以它比这更复杂。这是正确的方法,ASP.NET将对发布的每个输入进行拆分。如果有人在里面放了一个带逗号的字符串(比如地址“纽约市纽约广场,纽约10004”),那么使用String.Split(“,”)函数将是错误的。真不敢相信我不知道这一点,我每天都会学到一些新东西!这实际上应该是正确的答案。我遇到了@charles.art.br提到的一个问题,这对我有帮助
string[] MyTest = Request.Form.GetValues("MyTest");
string[] MyTest = Request.QueryString.GetValues("MyTest");