[英]Passing Json Data to MVC Controller
Here I need to pass Json object to the controller.But i have a problem in the MVC JsonResult controller area. 在这里我需要将Json对象传递给controller。但是我在MVC JsonResult控制器区域遇到问题。 I have no idea how to get those objects there.
我不知道如何将那些对象放在那里。 In ItemQtys there are multiple values.
在ItemQtys中有多个值。
My Code: 我的代码:
$("#btnSubmit").click(function (e) {
var itemQtys = [];
var currentQty;
$('input.input-qty').each(function (itm) {
currentQty = $(this).val();
if (!isNaN(currentQty) && currentQty != '') {
currentQty = parseInt(currentQty);
itemQtys.push({
ItemId: $(this).attr('data-id'),
Qty: currentQty
});
}
});
var data = {
UserId: $("#CustomerName option:selected").val(),
DeliveryInstructions: $('#DeliveryInstructions').val(),
ItemQtys: itemQtys
};
$.ajax({
type: "POST",
url: "/Orders/SubmitCustomerOrder",
contentType: "application/; charset=utf-8",
dataType: "json",
data: data,
async: false,
success: function (msg) {
if (msg.length > 0) {
$.each(function (response) {
//$("#Result").text(response.text);
});
}
}
});
});
MVC Controller: (I want to get the values to here) MVC控制器:(我想在此处获取值)
public JsonResult SubmitCustomerOrder(OrdersModels model, int? id)
{
return Json(new { });
}
My model: 我的模特:
public class OrdersModels : DbContext
{
public class CustomerOrders
{
public int CustomerOrderId { get; set; }
//public int CustomerId { get; set; }
public DateTime OrderDate { get; set; }
public DateTime DeliveryDate { get; set; }
public string DeliveryInstructions { get; set; }
public int Status { get; set; }
public int Customer_Supplier_CustomerSupplierId { get; set; }
public DateTime ModifiedDate { get; set; }
public Guid ModifiedBy { get; set; }
public bool IsActive { get; set; }
public List<OrderItems> OrderItemList { get; set; }
}
public class OrderItems
{
public int OrderItemsId { get; set; }
public int Products_ProductId { get; set; }
public int CustomerOrders_CustomerOrderId { get; set; }
public int Quantity { get; set; }
public DateTime ModifiedDate { get; set; }
public Guid ModifiedBy { get; set; }
public bool IsActive { get; set; }
}
}
For this scenario you must add a custom model binder for OrdersModels and create your model from httprequest 对于这种情况,您必须为OrdersModels添加自定义模型活页夹,并通过httprequest创建模型
public class OrderModelBinder : DefaultModelBinder
{
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var userId=request.Form["UserId"];
//ToDo
}
Your Model does not have any properties that can be used to bind - you need something to assign values to which match the schema of the posted data. 您的模型没有可用于绑定的任何属性-您需要一些东西来分配与发布的数据的模式匹配的值。
If you change your controller method to accept UserId, DeliveryInstructions and ItemQtys as values, your routing should work - you can then use these values to create your object server side. 如果更改控制器方法以接受UserId,DeliveryInstructions和ItemQtys作为值,则路由应该起作用-然后可以使用这些值创建对象服务器端。
You can create a JavaScript object which has same fields in CustomerOrders
class and pass it as a JSON object to controller on submit as below. 您可以创建一个JavaScript对象,该对象在
CustomerOrders
类中具有相同的字段,并将其作为JSON对象传递给提交时的控制器,如下所示。
var customerOrders= {};
// fill the object.
$.ajax(
{
url: 'Controller/SubmitCustomerOrder/',
data: JSON.stringify({customerOrders: customerOrders, id : id }),
contentType: 'application/json',
dataType: 'json',
type: 'POST',
success: function (data) {
// success
},
error: function () {
// error
}
});
Controller can be as below. 控制器可以如下。
[HttpPost]
public JsonResult SubmitCustomerOrder(CustomerOrders customerOrders, int? id)
{
return Json(new { });
}
Please refer following post for more information. 请参考以下帖子以获取更多信息。
Pass Complex JavaScript Object to MVC Controller 将复杂的JavaScript对象传递给MVC控制器
It illustrates how we can pass complex javascript objects to MVC controller. 它说明了如何将复杂的javascript对象传递给MVC控制器。
Thanks ! 谢谢 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.