尝试过找到的方法,但似乎仍无法解决这个问题。 我通过Jquery Aja传递一个对象列表,但似乎控制器正在接收空值(它正在识别列表计数正常)。
jquery代码如下:
var xmlids = Array();
for (var i = 0; i < orderId.length; i++) {
var xdata = {
"XmlOid": "" +orderId[i] + "",
"CourierCompany": $("#CourierCompany_"+orderId[i]).val() ,
"CourierService": $("#CourierService_" + orderId[i]).val(),
"StoreId" : storeId
};
xmlids.push(xdata);
}
var data = { invoices: xmlids };
$.ajax({
url: purl,
type: "POST",
dataType: "json",
//contentType: "application/json;",
async: false,
data: data,
控制器参数是:
public JsonResult ProcessSaleOrder(List<XMLInvoiceGeneration> invoices)
对象如下:
public class XMLInvoiceGeneration
{
public Int64 XmlOid { get; set; }
public string CourierCompany { get; set; }
public string CourierService { get; set; }
public Int64? StoreId { get; set; }
}
任何帮助表示感谢。
答案 0 :(得分:3)
我试图复制你的问题。
我创建了一个新的ASP.NET MVC Web应用程序,在Home控制器的索引视图中,我添加了以下内容
<input type="button" id="send" value="Send" />
@section scripts{
<script type="text/javascript">
$(function () {
$("input#send").on("click", function () {
var xmlids = Array();
for (var i = 0; i < 2; i++) {
var xdata = {
"XmlOid": 1,
"CourierCompany": "TempData",
"CourierService": "Temp",
"StoreId": 2
};
xmlids.push(xdata);
}
var data = { invoices: xmlids };
$.ajax({
url: "/Home/ProcessSaleOrder",
type: "POST",
dataType: "json",
async: false,
data: data
});
});
})
</script>
}
我基本上创建了一些临时数据,但试图仍然使用你原来的想法。我的控制器看起来像这样:
[HttpPost]
public ActionResult ProcessSaleOrder(List<XMLInvoiceGeneration> invoices)
{
return new EmptyResult();
}
当我单击按钮并点击控制器中的断点时,invoices
参数包含2个项目,两个项目都包含我在JavaScript代码中设置的值。我不确定为什么你的代码不起作用,但也许你可以使用我的模板来帮助你缩小问题范围。
答案 1 :(得分:1)
试试这个 取消注释// contentType:&#34; application / json;&#34;,
使用JSON.stringify(data)
data: JSON.stringify(data)
PS:网址的最佳做法:url: "@Url.Action("method","controller")"
答案 2 :(得分:1)
我在向控制器发送List时遇到了同样的问题。经过很多努力,我找到了它发送为null的原因。返回类型(Class)的字段未添加{get;组; }
$.ajax({
url: "/Home/CreateTasks",
data: ko.toJSON({Id: this.Id, tasks: objList }),
type: "POST",
dataType: "json",
processData: true,
contentType: "application/json; charset=utf-8",
success: data => {
}
我的模型类是: 之后
public class TaskFields
{
public string Title { get; set; }
public string Activity { get; set; }
}
public class CreateTaskInput
{
public int Id { get; set; }
public TaskFields TaskProperties { get; set; }
}
之前:
public class TaskFields
{
public string Title;
public string Activity;
}
public class CreateTaskInput
{
public int Id;
public TaskFields TaskProperties;
}
我的控制器方法是:
[HttpPost]
public JsonResult MethodName(int Id, List<CreateTaskInput> tasks)
{
}
我不确定这个答案会对你有所帮助。但它可能会帮助有类似错误的人。谢谢!