gpt4 book ai didi

c# - 将 JSON 对象传递给 c# 方法的奇怪问题(使用集合作为参数(使用 JQuery Widgets)

转载 作者:太空宇宙 更新时间:2023-11-03 14:08:07 24 4
gpt4 key购买 nike

传递以下内容时我遇到了一个奇怪的问题:

queueNotificationData = {
StartDate: that.batchData.StartDate.valueOf(),
StartTime: that.batchData.StartTime.valueOf(),
EndDate: that.batchData.EndDate.valueOf(),
EndTime: that.batchData.EndTime.valueOf(),
ETR: that.batchData.ETR.valueOf(),
PTW: that.batchData.PTW.valueOf(),
SelectedTemplate: that.batchData.SelectedTemplate.valueOf(),
IncidentFlag: that.batchData.IncidentFlag.valueOf(),
IncidentNumber: that.batchData.IncidentNumber.valueOf(),
SendToSubscriber: that.batchData.SendToSubscriber.valueOf(),
SendToCustomer: that.batchData.SendToCustomer.valueOf(),
SendToSMC: that.batchData.SendToSMC.valueOf(),
BatchServiceIds: that.serviceIds,
DescriptionOfWorks: that.batchData.DescriptionOfWorks.valueOf(),
AffectedCustomerVOs: that.customerVOs
}

问题出在 AffectedCustomerVOs 参数上——这是从之前的调用中检索到的,并通过一系列小部件传递(它是一个相当长的向导表单的一部分)

这是调用 c# 方法实际进行处理的代码:

this.options.sendRequest({
url: this.options.dataUrl,
data: queueNotificationData,
cache: false,
dataType: 'json',
success: function (data) {
that.data = data;
that._showSavedMessage();
},
error: function () {
that._showErrorMessage();
}
});

这是 C# 方法:

    [HttpPost]
[Authorize]
[ValidateInput(false)]
public JsonResult QueueNotificationBatch(QueueNotificationInputModel param)
{
//do some work - code not included
}

QueueNotificationInputModel 在哪里

public class QueueNotificationInputModel
{
public string BatchServiceIds { get; set; }
public List<CustomerVO> AffectedCustomerVOs { get; set; }
public string StartDate { get; set; }
public string StartTime { get; set; }
public string EndDate { get; set; }
public string EndTime { get; set; }
public string ETR { get; set; }
public string PTW { get; set; }
public string SelectedTemplate { get; set; }
public string IncidentFlag { get; set; }
public string IncidentNumber { get; set; }
public bool SendToSubscriber { get; set; }
public bool SendToCustomer { get; set; }
public bool SendToSMC { get; set; }
public string DescriptionOfWorks { get; set; }

public QueueNotificationInputModel()
{
AffectedCustomerVOs = new List<CustomerVO>();
}
}

现在 - 所有这些代码似乎都可以正常工作 - C# 方法已成功调用并且传入的值正常,但 AffectedCustomerVO 除外。该列表中有 3 个项目(这是正确的)但列表中的项目没有值 - 全部为空值/0。如果我放 alert(that.customerVOs[0]['Email']);在创建 queueNotificationData 对象之前,它会正确显示“test@test.com”,但此值永远不会进入 c# 方法。

我认为这是某种序列化问题,但我不知道出在哪里?帮助将不胜感激

最佳答案

尝试将这个复杂对象作为序列化的 JSON 发送:

this.options.sendRequest({
url: this.options.dataUrl,
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(queueNotificationData),
cache: false,
dataType: 'json',
success: function (data) {
that.data = data;
that._showSavedMessage();
},
error: function () {
that._showErrorMessage();
}
});

此处显示的 JSON.stringify 方法是在现代浏览器中原生构建的。如果您需要支持旧版浏览器,您可能需要包含 json2.js脚本到您的页面。

关于c# - 将 JSON 对象传递给 c# 方法的奇怪问题(使用集合作为参数(使用 JQuery Widgets),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8753103/

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