Asp.net 向web服务传递未知数量的参数

Asp.net 向web服务传递未知数量的参数,asp.net,web-services,json,serialization,Asp.net,Web Services,Json,Serialization,我对使用web服务比较陌生。我正在尝试创建一个从ASP.Net表单接收数据的表单,该表单的输入控件是在运行时动态创建的,我不知道将传递多少个控件值 我想我将在表单上使用jQuery的serialize()来获取数据,但是web服务接受什么参数呢?我想也许我可以使用serializeArray(),但我仍然不知道JavaScript数组接受哪种类型的变量 最后,我认为在将数据发送到web服务之前,可能需要使用数据创建一个简单的数据传输对象。我只是不想通过DTO路线,如果有一个更简单的方法或一个既定

我对使用web服务比较陌生。我正在尝试创建一个从ASP.Net表单接收数据的表单,该表单的输入控件是在运行时动态创建的,我不知道将传递多少个控件值

我想我将在表单上使用jQuery的serialize()来获取数据,但是web服务接受什么参数呢?我想也许我可以使用serializeArray(),但我仍然不知道JavaScript数组接受哪种类型的变量

最后,我认为在将数据发送到web服务之前,可能需要使用数据创建一个简单的数据传输对象。我只是不想通过DTO路线,如果有一个更简单的方法或一个既定的最佳实践,我应该遵循


提前感谢您提供的任何指导,并让我知道我不够清楚,或者您有任何问题。

标题问题的答案(假设这是ASP.Net web服务)是在您的web服务方法中使用
params
关键字:

[WebMethod]
public void SendSomething(params string[] somethings)
{
    foreach (string s in somethings)
    {
        // do whatever you're gonna do
    }
}
示例:

SendSomething("whatever");
SendSomething("whatever 1", "whatever 2", "whatever 3");

事实上,你甚至不需要
params
关键字-使用普通数组作为参数可以让你传入未知数量的值。

我创建了自己的数据传输对象,我想这一直是大脑的前沿解决方案,我只是在想,关于如何处理这个问题,可能有一个公认的最佳实践。

我可能没有正确理解您的体系结构,但听起来好像您完全可以控制将输入值传递给web服务的ASP.Net表单。如果是这种情况,为什么您需要一个单独的web服务呢?作为输入验证的一部分,我需要服务器处理。根据控件ID中的详细信息,有一些特殊的验证规则。我需要控件ID和值作为键值对,因此我尝试使用var postData=$('#aspnetForm').serializeArray()传递表单的JSON字符串;然后$.ajax({data:JSON.stringify(postData)),并将web服务设置为接受错误为“Type System.Collections.Generic.IDictionary`2[[System.string,…]的字符串数组来反序列化数组。”。因此,我认为我可能需要一个多维数组,并将web服务的参数更改为string[,]但仍然收到相同的异常。我是否正确地假设您试图通过AJAX从客户端页面调用web服务?表单是否太大而无法进行常规回发?您是正确的。我尝试不进行回发,因为这基本上是一个更复杂的输入验证,但对用户来说,仍然只是输入验证。您的问题是那么,m可能是您从AJAX调用web服务的方式。每当C#client调用web服务时,序列化/反序列化的Grisless都是完全隐藏的,您可以将对象数组或几乎任何东西(甚至列表)作为参数传递。我很确定您也可以传递string[],但也许可以尝试定义web服务方法以获取object[]并查看其作用。Oop,这可能比我想象的要简单。在您第一条注释中的代码中,您似乎试图对仅为单个字符串(即不是字符串数组)的对象调用serializeArray()。