在.NET中的HTTP请求中传递数组值

JR.*_*JR. 16 .net c# arrays http request

在.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>
Run Code Online (Sandbox Code Playgroud)

ASHX处理程序以逗号分隔的字符串接收"user"参数.您可以通过拆分字符串轻松获取值:

public void ProcessRequest(HttpContext context)
    {
        string[] users = context.Request.Form["user"].Split(',');
    }
Run Code Online (Sandbox Code Playgroud)

所以,我已经找到了我的问题的答案:为同一个参数名称分配多个值,假设ASHX处理程序将其作为逗号分隔的字符串接收,并拆分字符串.我的问题是这是否通常在.NET中完成.

这是什么标准做法?是否有一种更简单的方法来获取多个值,而不是假设该值是以逗号分隔并在其上调用Split()?这是数组通常如何在.NET中传递,还是使用XML?

有没有人对这是否是最好的方法有任何见解?

Guf*_*ffa 32

没有真正的标准,但你使用的是最接近它的.

但是,这些值实际上不是以逗号分隔的字符串形式发送的,它们是作为具有相同名称的单独值发送的.示例中的表单数据如下所示:

user=Aaron&user=Bobby&user=Jimmy&user=Kelly&user=Simon&user=TJ
Run Code Online (Sandbox Code Playgroud)

您可以像这样直接读取值作为数组:

string[] users = context.Request.Form.GetValues("user");
Run Code Online (Sandbox Code Playgroud)

如果你使用Form["user"]它将为你连接值,你必须再次拆分它们.这只是浪费时间,如果任何值包含逗号,它也会中断.