Làm thế nào để truyền model lớn từ view sang controller thông qua Ajax?

Hiện tại em muốn truyền một model có chứa rất nhiều dữ liệu bên trong từ view sang controller. Hiện tại em đang gặp phải vấn đề đó là model truyền qua bị null.

JS:

function testVVV() {
    var modelObject = @Html.Raw(Json.Serialize(Model));
    var dataJson = JSON.stringify({ 'TongHopItemDuongThanhPhamModel': modelObject });
    var data = {
    json: JSON.stringify(modelObject)
    };
    $.ajax({
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    datatype: "json",
    url: "/nhap-so-lieu/test-checking",
    data: dataJson,
    success: function (res) {
    alert('ok');
    },
    });
}

Controller:

[HttpPost]
[Route("test-checking")]
public IActionResult TestCheck([FromBody]TongHopItemDuongThanhPhamModel dataJson)
{
return RedirectToAction("Index");
}

Các giá trị của biến:

Cách 1: phần data trong ajax bạn tạo một object có có thuộc tính giống như tên thuộc tính của class model.

data : {
   name : "Lê Long Lợi",
   CCCD : 43449438394
   }

Trong controller tham số là object tạo từ class model đó [FromBody] Person

public class Persion {
    public string name {set;get;}
    public int CCCD {set;get;}
}

Nên tạo thêm class PersonDTO để mapping entity model qua DTO (mình đang dùng cách này)

Cách 2:

Bên javascript JSON.stringify object đó về string rồi ASP.NET parse string đó ra chuyển về object

Controller khi trả về object thì nó tự chuyển sang javascript object

Dùng cách 1 là không được rồi. Vì em đang truyền một cục Model có nhiều lớp bên trong và lại có lớp bên trong nữa. Nên là em đang hướng tới cách 2 và đó là code hiện thời. Nhưng em đang gặp vấn đề đó là khi dữ liệu truyền qua controller thì lại bị null.

var dataJson = JSON.stringify(modelObject );

Sau khi đổi thành code như trên thì em đã truyền data qua được. Cảm ơn mọi người đã quan tâm ghé vào đây.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?