gpt4 book ai didi

c# - 我可以将非原始数据类型传递给 WebMethod 吗?

转载 作者:行者123 更新时间:2023-11-30 22:42:56 25 4
gpt4 key购买 nike

我在尝试将非原始(和用户定义的)数据类型传递到 WebMethod 时遇到问题。有某种方法可以做到这一点吗?这是我的代码示例:

[WebMethod]
public bool GetTableRecordCnt(int i, String str, DateTime? lastUpdatedDate, UserDefinedType udt, out FDT_SCHEDULER_STATUS[] schedulerTable)
{
//code
}

当我尝试从我的客户端应用程序调用此函数时,出现以下错误:

“无法从传输连接读取数据。”

如果我将 UserDefineType 参数替换为原始数据类型(例如 int),则客户端能够从 WebMethod 获得响应。

在此先感谢您的帮助。

编辑:

从客户端应用程序调用代码:

UserDefinedType udt = new UserDefinedType();
UserDefinedType1[] tableRecords = ThisApplication.FillArray();

bool result = WebServiceReferenceName.GetTableRecordCnt(1, "tableName", "10/10/2010 12:00:00", udt, out tableRecords);

这是对传递给网络方法的参数的过度简化,但每个参数中的数据就是要传递的数据。

最佳答案

是的,你可以。您需要创建一个与您的 UserDefinedType 的公共(public)属性相匹配的对象。如果您使用的是 .Net 网络服务并将该方法标记为 [ScriptMethod()] 然后将响应 JSON,这将非常简单。

这是一个例子:

public class UserDefinedType
{
public int Property1 { get; set; }
public string Property2 { get; set; }
}

您可以使用以下 javascript 作为参数传递:

var param = "{ Property1 : '"+prop1Val+"', Property2 : '"+prop2Val+"'}";

请注意,您必须声明要作为字符串传递的 JSON 对象,否则如果您使用 jQuery.ajax(...) 它将把您的参数对象序列化为编码的参数字符串,而不是将其作为原生 JSON 传递字符串。

还有一些不错的库可以为您处理 JSON 数据对象到字符串,例如 jquery-json 2.2 .使用它,您可以简单地将参数作为 $.toJSON(param) 传递。

最后,这是一个使用 jquery 将请求发送到 ASP .Net Web 服务的示例:

$.ajax({
type: "POST",
url: "/Services/YourService.asmx/YourMethod",
cache: false,
data: $.toJSON(param), // Convert JSON object to String for Post
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
HandleResponse(response.d)
},
error: function (e) {
alert('error during web service call');
}
});

关于c# - 我可以将非原始数据类型传递给 WebMethod 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4165153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com