Asp.net mvc 通过jQuery AJAX将对象数组传递给控制器,ASP.NET Core 2.2 MVC中的操作数据始终为空-它使用的是.NET Framework 4.5
我在一个项目中工作,我需要使用ajax调用来保存包含订单细节的页面中的对象数据。当我在.NET framework 4.5版中使用project时,它工作得非常好,但当我使用ASP.NET核心MVC时,它就不工作了。需要帮忙吗 我在类似的问题上尝试了每一件事,但都不起作用。例如,我使用符号Asp.net mvc 通过jQuery AJAX将对象数组传递给控制器,ASP.NET Core 2.2 MVC中的操作数据始终为空-它使用的是.NET Framework 4.5,asp.net-mvc,asp.net-core-mvc,Asp.net Mvc,Asp.net Core Mvc,我在一个项目中工作,我需要使用ajax调用来保存包含订单细节的页面中的对象数据。当我在.NET framework 4.5版中使用project时,它工作得非常好,但当我使用ASP.NET核心MVC时,它就不工作了。需要帮忙吗 我在类似的问题上尝试了每一件事,但都不起作用。例如,我使用符号[frombody]——但我仍然有同样的问题 我有以下控制器操作: public ActionResult CreateOrders([FromBody] T_POS_ENT_ORDER_DETIALS_Tem
[frombody]
——但我仍然有同样的问题
我有以下控制器操作:
public ActionResult CreateOrders([FromBody] T_POS_ENT_ORDER_DETIALS_Temp []T_POS_ENT_ORDER_Data)
{
GRepository<T_POS_ENT_ORDER_DETIALS_Temp> t_pos_ent_orderOpr = new GRepository<T T_POS_ENT_ORDER_DETIALS_Temp>();
T_POS_ENT_ORDER_Data.order_Date = DateTime.Now;
t_pos_ent_orderOpr.Add(T_POS_ENT_ORDER_Data);
return Json(new { msg = "Successfully added " });
}
我也有这门课:
public class T_POS_ENT_ORDER_DETIALS_Temp
{
public string LocPrice { get; set; }
public string LocProductID { get; set; }
public string discount { get; set; }
public string posNumber { get; set; }
public string productName { get; set; }
public int productQynt { get; set; }
}
仅显示订单详细信息始终为空时没有错误…我在您的数据中没有看到数组,只有一个带有某些字段的对象。另外,
billArray
与T\u POS\u entu\u ORDER\u Data
不匹配,模型绑定通过名称匹配完成
要解决此问题,您应该将代码调整为仅发送和接收单个对象:
public ActionResult CreateOrders(T_POS_ENT_ORDER_DETIALS_Temp T_POS_ENT_ORDER_Data)
...
var DATA = {
LocPrice: "12",
LocProductID: "1002",
discount: "0",
posNumber: "1",
productName: "soap",
productQynt: "1"
});
$.ajax({
url: '/AjaxT_POS_ENT_ORDER/CreateOrders',
data: JSON.stringify(DATA),
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
async: false,
success: OnSuccess
});
小调,类名“DETIALS”->“DETAILS”中有一个输入错误。您需要将
JSON.stringify({'billArray':DATA})
更改为JSON.stringify(DATA)
,如下所示:
DATA.push({ LocPrice: "12",LocProductID: "1002" ,discount: "0",posNumber: "1" ,productName: "soap",productQynt: "1"});
1.意见:
<script>
$(document).ready(function () {
var DATA = [];
DATA.push({ LocPrice: "12" });
DATA.push({ LocProductID: "1002" });
DATA.push({ discount: "0" });
DATA.push({ posNumber: "1" });
DATA.push({ productName: "soap" });
DATA.push({ productQynt: "1" });
$.ajax({
url: '/AjaxT_POS_ENT_ORDER/CreateOrders',
data: JSON.stringify(DATA),
contentType: "application/json; charset=utf-8",
dataType: "json",
type: "POST",
async: false
});
});
</script>
3.结果:
顺便说一下,如果要将它们作为一个数组对象而不是六个数组传递,则需要更改数据,如下所示:
DATA.push({ LocPrice: "12",LocProductID: "1002" ,discount: "0",posNumber: "1" ,productName: "soap",productQynt: "1"});
我在.Net Core 3.1中工作,这对我很有用: 1。控制器 尝试[FromForm]而不是[FromBody]
[HttpPost]
public ActionResult CreateOrdersPOSTObject([FromForm] List<T_POS_ENT_ORDER_DETIALS_Temp> prm)
{
//your logic...
return Json(new { msg = "Successfully added " });
}
或者,如果您愿意,您可以使用速记$。post具有相同的结果
var DATA = [];
DATA.push({ LocPrice: "12", LocProductID: "1002", discount: "0", posNumber: "1", productName: "soap", productQynt: "1" });
DATA.push({ LocPrice: "23", LocProductID: "1003", discount: "0", posNumber: "1", productName: "shampoo", productQynt: "1" });
DATA.push({ LocPrice: "7",LocProductID: "1004" ,discount: "0",posNumber: "2" ,productName: "sponge",productQynt: "2"});
$.post(
'@Url.Content("~/home/CreateOrdersPOSTObject")',
{ "prm": DATA },
function () {
alert( "success" );
})
.fail(function() {
alert( "error" );
});
我做了你说的每一件事,但当我在controllerTry中进行调试时,对象仍然是空的,将传递的对象减少为单个字符串,直接回到基础并从那里开始构建。DATA=“XXX”并且在您的控制器中使用[HttpPost]CreateOrders(字符串内容)等。谢谢,这是我在尝试了几个小时的不同解决方案后唯一能做的事情。
var DATA = [];
DATA.push({ LocPrice: "12", LocProductID: "1002", discount: "0", posNumber: "1", productName: "soap", productQynt: "1" });
DATA.push({ LocPrice: "23", LocProductID: "1003", discount: "0", posNumber: "1", productName: "shampoo", productQynt: "1" });
DATA.push({ LocPrice: "7",LocProductID: "1004" ,discount: "0",posNumber: "2" ,productName: "sponge",productQynt: "2"});
$.ajax({
url: '@Url.Content("~/home/CreateOrdersPOSTObject")',
data: { "prm": DATA },
type: "POST",
dataType: "json",
async: true
});
var DATA = [];
DATA.push({ LocPrice: "12", LocProductID: "1002", discount: "0", posNumber: "1", productName: "soap", productQynt: "1" });
DATA.push({ LocPrice: "23", LocProductID: "1003", discount: "0", posNumber: "1", productName: "shampoo", productQynt: "1" });
DATA.push({ LocPrice: "7",LocProductID: "1004" ,discount: "0",posNumber: "2" ,productName: "sponge",productQynt: "2"});
$.post(
'@Url.Content("~/home/CreateOrdersPOSTObject")',
{ "prm": DATA },
function () {
alert( "success" );
})
.fail(function() {
alert( "error" );
});