ajax 调用 actionmethod 的参数中没有嵌套对象值
Nested object values does not follow in parameter from ajax call to actionmethod
参数中的嵌套对象值不符合。我怎样才能得到完整的对象,包括嵌套值在控制器的 actionmethod 中遵循?
当我调用ajac方法时,图片上红色圆圈内的对象中有值。但是在controller里面没有跟随
mapHub.client.requestForHelpInClient = function (requestDetails) {
debugger;
$.ajax({
type: "GET",
url: '@Url.Action("RequestPartialView", "Supplier")',
data: requestDetails,
success: function (response) {
$("#Request").html(response);
},
error: function (error) {
console.log(error);
}
}); }
function requestForHelp() {
requestDetails = {
CustomerId: @Model.Customer.CustomerID,
NumberOfHours: $("#numberOfHoursTextBox").val(),
TypeOfMachine: $("#typeOfMachineDropDownMenu").children("option:selected").val(),
CustomerLocation: CustomerPosition,
NearestSupplierList: nearestSuppliers
//StartDate: $( "#startDate" ).val(),
//EndDate: $( "#endDate" ).val(),
}
mapHub.server.requestForHelp(requestDetails);
public class RequestDetails
{
public int CustomerId { get; set; }
public Customer Customer { get; set; }
public MapClient CustomerLocation { get; set; }
public int NumberOfHours { get; set; }
public string TypeOfMachine { get; set; }
public List<MapClient> NearestSupplierList { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
信号中心
public void RequestForHelp(RequestDetails requestDetails)
{
requestDetails.Customer = Service.CustomerService.GetCustomerById(requestDetails.CustomerId);
Service.SupplierService.GetAspNetUserIDBySupplierID(requestDetails.NearestSupplierList[0].ClientId);
Clients.User(supplierAspNetUserID).requestForHelpInClient(requestDetails);
}
为您提供两个快速更改。
您正在使用 GET
方法。 GET
方法不能那样传输数据。将控制器和 ajax 中的 GET
更改为 POST
。
您需要在控制器中添加一个[FromBody]
标签。根据您使用的 MVC 版本,数据绑定器可能对此特别挑剔。
控制器:
[HttpPost]
public ActionResult RequestPartialView([FromBody]RequestDetails reqDetails)
{
// code here
}
Ajax:
mapHub.client.requestForHelpInClient = function (requestDetails) {
$.ajax({
type: "POST",
url: '@Url.Action("RequestPartialView", "Supplier")',
data: requestDetails,
success: function (response) {
$("#Request").html(response);
},
error: function (error) {
console.log(error);
}
});
}
参数中的嵌套对象值不符合。我怎样才能得到完整的对象,包括嵌套值在控制器的 actionmethod 中遵循?
当我调用ajac方法时,图片上红色圆圈内的对象中有值。但是在controller里面没有跟随
mapHub.client.requestForHelpInClient = function (requestDetails) {
debugger;
$.ajax({
type: "GET",
url: '@Url.Action("RequestPartialView", "Supplier")',
data: requestDetails,
success: function (response) {
$("#Request").html(response);
},
error: function (error) {
console.log(error);
}
}); }
function requestForHelp() {
requestDetails = {
CustomerId: @Model.Customer.CustomerID,
NumberOfHours: $("#numberOfHoursTextBox").val(),
TypeOfMachine: $("#typeOfMachineDropDownMenu").children("option:selected").val(),
CustomerLocation: CustomerPosition,
NearestSupplierList: nearestSuppliers
//StartDate: $( "#startDate" ).val(),
//EndDate: $( "#endDate" ).val(),
}
mapHub.server.requestForHelp(requestDetails);
public class RequestDetails
{
public int CustomerId { get; set; }
public Customer Customer { get; set; }
public MapClient CustomerLocation { get; set; }
public int NumberOfHours { get; set; }
public string TypeOfMachine { get; set; }
public List<MapClient> NearestSupplierList { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
}
信号中心
public void RequestForHelp(RequestDetails requestDetails)
{
requestDetails.Customer = Service.CustomerService.GetCustomerById(requestDetails.CustomerId);
Service.SupplierService.GetAspNetUserIDBySupplierID(requestDetails.NearestSupplierList[0].ClientId);
Clients.User(supplierAspNetUserID).requestForHelpInClient(requestDetails);
}
为您提供两个快速更改。
您正在使用
GET
方法。GET
方法不能那样传输数据。将控制器和 ajax 中的GET
更改为POST
。您需要在控制器中添加一个
[FromBody]
标签。根据您使用的 MVC 版本,数据绑定器可能对此特别挑剔。
控制器:
[HttpPost]
public ActionResult RequestPartialView([FromBody]RequestDetails reqDetails)
{
// code here
}
Ajax:
mapHub.client.requestForHelpInClient = function (requestDetails) {
$.ajax({
type: "POST",
url: '@Url.Action("RequestPartialView", "Supplier")',
data: requestDetails,
success: function (response) {
$("#Request").html(response);
},
error: function (error) {
console.log(error);
}
});
}