如何在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 = $_POST["field"]
$field["name"]
和$field["age"]
只是包含姓名和年龄的数组。
答案 0 :(得分:30)
实际上,它与asp.net确实存在。 - 你可以用
string[] MyTest = Request.Form.GetValues("MyTest");
或
string[] MyTest = Request.QueryString.GetValues("MyTest");
答案 1 :(得分:4)
你可以使用标准的字符串拆分 - 这就是php在幕后为你所做的一切。 PHP不是强类型语言,但这意味着它们更容易提供此功能的“外观”。
现实情况是,php只允许您提供逗号分隔的输入,并自动为您分割。
所以...如果你想在asp.net中这样做,你可以多次使用相同的输入名称,它将作为逗号分隔列表与请求对象一起返回。我不建议将这种方法用于用户输入的输入,但是如果您控制输入,例如将列表组合到jquery脚本的隐藏输入中,它将正常工作。
要了解正在发生的事情(使用php也是如此......所有Web开发技术人员都在使用相同的http规则),只需尝试发布一个带有输入(不设置runat服务器)的表单,即两次。
<input type="text" name="MyTest" value="MyVal1" />
<input type="text" name="MyTest" value="MyVal2" />
在页面加载时添加此
if(IsPostBack)
{
Response.Write(Request["MyTest"]);
}
你应该看到
MyVal1,MyVal2
在屏幕上。
现在,如果你想把它变成一个数组,你可以:
string[] myvals = Request["MyTest"].Split(',');
如果你想要Integers或其他数据类型(php不知道/关心什么是数据类型),你将需要遍历它并将其解析为另一个数组/通用列表。
我不知道你想要什么作为最终结果,但了解浏览器发回的内容是第一步,简短的回答是......
是的,ASP.NET可以这样做(只需多一点手动)。
答案 2 :(得分:0)
这些不输入数组。 HTML没有数组的概念。
这些只是具有相同名称的输入组。
你想要达到什么目的?你为什么不使用服务器端控件?
更新
您可以访问Request.Forms
集合 - 它将保留已发布的表单元素。
或者,使用服务器端控件 - 您将能够通过ID访问这些控件。