在.NET中的HTTP请求中传递和处理数组的标准方法是什么?我有一个解决方案,但我不知道这是否是最佳方法。
这是我的解决方案:
<form action="myhandler.ashx" method="post">
<input type="checkbox" name="user" value="Aaron" />
<input type="checkbox" name="user" value="Bobby" />
<input type="checkbox" name="user" value="Jimmy" />
<input type="checkbox" name="user" value="Kelly" />
<input type="checkbox" name="user" value="Simon" />
<input type="checkbox" name="user" value="TJ" />
<input type="submit" value="Submit" />
</form>
ASHX处理程序以逗号分隔的字符串接收“user”参数。您可以通过拆分字符串轻松获取值:
public void ProcessRequest(HttpContext context)
{
string[] users = context.Request.Form["user"].Split(',');
}
所以,我已经解决了我的问题:为同一个参数名称分配多个值,假设ASHX处理程序将其作为逗号分隔的字符串接收,并拆分字符串。我的问题是这是否通常是在.NET中完成的。
这是什么标准做法?是否有一种更简单的方法来获取多个值,而不是假设该值是以逗号分隔并在其上调用Split()?这是数组通常如何在.NET中传递,还是使用XML?
有没有人对这是否是最佳方法有任何见解?
答案 0 :(得分:32)
没有真正的标准,但你使用的是最接近它的标准。
但是,这些值实际上是不以逗号分隔的字符串形式发送,它们作为具有相同名称的单独值发送。示例中的表单数据如下所示:
user=Aaron&user=Bobby&user=Jimmy&user=Kelly&user=Simon&user=TJ
您可以像这样直接读取值:
string[] users = context.Request.Form.GetValues("user");
如果您使用Form["user"]
,它将为您连接值,您必须再次拆分它们。这只是浪费时间,如果任何值包含逗号,它也会中断。
答案 1 :(得分:2)
如果您使用复选框或多选列表框,则可以从html自动获取以逗号分隔的值集。你在做什么都很好。如果您以其他方式在javascript中生成数组,则可以生成以逗号分隔的字符串并将其分配给隐藏字段,并以相同方式在服务器上使用split()。 XML当然是另一种选择,但如果你想要做的只是传递一个简单的数字或短字符串数组,它似乎很复杂。 (当然,如果你需要传递的字符串值包含逗号,这会搞砸你的简单计划。)
答案 2 :(得分:0)
我遇到了同样的问题,并设计了一个使用JSON的新解决方案,该解决方案使请求更加简洁和可读。
获取请求参数指定为app.run(debug=True, port=int(os.environ.get("PORT", 5000)), host='0.0.0.0')
在服务器端,我们使用?users=['Joe','Simon','Carol']
将传入的字符串转换为字符串数组。
Newtonsoft.Json