gpt4 book ai didi

c# - 如何将多个 Json 对象传递给 ASP.net MVC Controller ?

转载 作者:行者123 更新时间:2023-11-30 20:35:21 27 4
gpt4 key购买 nike

非常感谢这里的提示...我一直在寻找解决方案 4 个小时...

我有这样一个功能:

public virtual JsonResult LoadPreviousProductsJson(SearchResultModel rmodel, SearchCriteriaModel cmodel)

我正在尝试像这样向这个 Controller 发送数据:

var jsonData = $('#frmSearchResult').serialize();
var stringToPost = JSON.stringify(jsonData);

var jsonData2 = $('#frmSearchProducts').serialize();
var stringToPost2 = JSON.stringify(jsonData2);


$.post('@Url.Action(MVC.Product.LoadPreviousProductsJson())', { rmodel: stringToPost, cmodel: stringToPost2 })
.done(function(data) {....

这导致对象在 Controller 中为 Null...

如果我只发送 1 个 Json 对象我就成功了:

$.post('@Url.Action(MVC.Product.LoadPreviousProductsJson())', stringToPost)
.done(function(data) {....

但是当我尝试将它们一起发送时,总是失败...


我能做的唯一成功的事情就是将 2 个对象作为字符串发送并使用 Newtonsoft 读取它们,但在这里我无法将字符串转换为相应的对象....

model = Newtonsoft.Json.JsonConvert.DeserializeObject<SearchResultModel>(rmodel);
model2 = Newtonsoft.Json.JsonConvert.DeserializeObject<SearchCriteriaModel>(cmodel);

上面的代码只是失败了...

最佳答案

创建一个新模型来存储特定于您的操作的负载

public class SearchViewModel {
public SearchResultModel rmodel { get; set; }
public SearchCriteriaModel cmodel { get; set; }
}

更新操作以接受预期的负载

public virtual JsonResult LoadPreviousProductsJson(SearchViewModel model) {
SearchResultModel rmodel = model.rmodel;
SearchCriteriaModel cmodel = model.cmodel;

//... other code
}

在客户端创建相同的模式并发送一个负载。

var jsonData = {};
$('#frmSearchResult').serializeArray()
.map(function(x){jsonData[x.name] = x.value;});

var jsonData2 = {};
$('#frmSearchProducts').serializeArray()
.map(function(x){jsonData2[x.name] = x.value;});

var model = { rmodel:jsonData, cmodel:jsonData2 };

var payload = JSON.stringify(model);

$.post('@Url.Action(MVC.Product.LoadPreviousProductsJson())', payload)
.done(function(data) {....}

关于c# - 如何将多个 Json 对象传递给 ASP.net MVC Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38142372/

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