gpt4 book ai didi

javascript - 如何在 ASp.NET mvc 中使用 Jquery 将数组绑定(bind)到嵌套字段

转载 作者:行者123 更新时间:2023-12-03 04:36:11 25 4
gpt4 key购买 nike

我有一个像这样的ViewModel:

public class SaveWorkOrderViewModel
{
public Guid WorkOrderId { get; set; }
public List<SaveWorkOrderDelayReasonViewModel> DelayReasons { get; set; }
}
public class SaveWorkOrderDelayReasonViewModel
{
public Guid DelayReasonId { get; set; }
public string Title { get; set; }
}

我有 controller 获取 SaveWorkOrderViewModel 作为参数,如下所示:

[HttpPost]
public virtual JsonResult Save(SaveWorkOrderViewModel saveWorkOrderViewModel)
{
....
}

将数据绑定(bind)到此我尝试如下:

var workOrderId = $(this).data('workOrderId'); // return guid
var DelayReasons = $("#drpdelay").select2("val"); // return array of guid
var saveWorkOrderViewModel = {
workOrderId: workorderId,
DelayReasons: {
DelayReasonId:DelayReasons
}
};

但是当发布页面时,我得到 DelayReasonsnull

我找不到任何类似的帖子来解决这个问题。

更新:

我发送ajax调用的脚本是:

$.ajax({
url: '@Url.Action(MVC.Admin.WorkOrder.Save())',
data: { saveWorkOrderViewModel },
type: "POST",
success: function (data) {
showMessage(data.message, data.notificationType);
if (data.result) {
RefreshKendoGrid('woGrid');
}
},
error: function (response) { }
});

最后我改变了这样的脚本并且它工作正常:

var fields = [];
$(delays).each(function (index, value) {
var obj = {};
obj["DelayReasonId"] = value;
obj["Title"] = null;
fields.push(obj);
});

var saveWorkOrderViewModel = {
workOrderId: workorderId,
DelayReasons: fields
};

最佳答案

您需要设置 contentType 选项以使用 json,并对数据进行字符串化

....
var saveWorkOrderViewModel = {
workOrderId: workorderId,
DelayReasons: fields
};

$.ajax({
url: '@Url.Action(MVC.Admin.WorkOrder.Save())',
data: JSON.stringify(saveWorkOrderViewModel),
type: 'POST',
contentType: 'application/json; charset=UTF-8',
success: function (data) {
....

或者,使用当前的 ajax 选项,该选项使用默认的 application/x-www-form-urlencoded;例如,对于 contentType charset=UTF-8,您需要使用索引器为集合生成名称/值对(其中 xxxx 是您的 指导值)

var saveWorkOrderViewModel = {
workOrderId: workorderId,
DelayReasons[0].DelayReasonId: xxxx,
DelayReasons[1].DelayReasonId: xxxx,
....
};

关于javascript - 如何在 ASp.NET mvc 中使用 Jquery 将数组绑定(bind)到嵌套字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43290892/

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