Как получить каждое значение из таблицы в ASP. NET MVC? - PullRequest
0 голосов
/ 20 июня 2020

Я получаю каждое значение, но оно не отображается в DSChiTiet. Как я могу это исправить? Он получает только значения TenKH, NgayLap, TongTien.

DSChiTiet не получает значение из таблицы и отображает null. введите описание изображения здесь

Большое спасибо за вашу помощь <3. </p>

Моя модель PhieuBanHangModel

public class PhieuBanHangViewModel
{
    public int MaPBH { get; set; }
    public string TenKH { get; set; }
    public DateTime NgayLap { get; set; }
    public decimal TongTien { get; set; }

    public IEnumerable<CT_PhieuBanHangViewModel> DSChiTiet { get; set; }
}

Моя модель CT_PhieuBanHangModel

public class CT_PhieuBanHangViewModel
{
    public int MaPBH { get; set; }
    public int MaSP { get; set; }
    public int SoLuong { get; set; }
    public decimal DonGia { get; set; }
    public decimal ThanhTien { get; set; }
}

Создание контроллера Json

    [HttpPost]
    public JsonResult Create(PhieuBanHangViewModel phieuBanHang)
    {

        return Json(data: "", JsonRequestBehavior.AllowGet);
    }

Функция в представлении

function ThanhToan() {
        var phieuBanHang = {};
        var dsct_PhieuBanHang = new Array();
        phieuBanHang.TenKH = $("#txtTenKH").val();
        phieuBanHang.NgayLap = $("#txtNgayGiaoDich").val();
        phieuBanHang.TongTien = $("#txtTongTien").val();

        $("table tr:not(:first)").each(function () {
            var ct_PhieuBanHang = {};
            ct_PhieuBanHang.MaSP = parseFloat($(this).find("td:eq(0))").text());
            ct_PhieuBanHang.SoLuong = parseFloat($(this).find("td:eq(4))").text());
            ct_PhieuBanHang.DonGia = parseFloat($(this).find("td:eq(6))").text());
            ct_PhieuBanHang.ThanhTien = parseFloat($(this).find("td:eq(7))").text());
            dsct_PhieuBanHang.push(ct_PhieuBanHang);

        });
        phieuBanHang.DSChiTiet = dsct_PhieuBanHang;
        $.ajax({
            async: true,
            type: 'POST',
            dataType: 'JSON',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(phieuBanHang),
            url: '/Manager/CT_PhieuBanHang/Create',
            success: function (data) {
            },

            error: function () {
                alert('Lỗi');
            }
        });
    }

1 Ответ

0 голосов
/ 20 июня 2020

Возможно, вам потребуется унаследовать ApiController и добавить атрибут [FromBody] в модель привязки:

public class MyController : ApiController
{
    /* something else... */

    // /Manager/CT_PhieuBanHang/Create
    [HttpPost]
    public JsonResult Create([FromBody] PhieuBanHangViewModel phieuBanHang)
    {
        return Json(data: "", JsonRequestBehavior.AllowGet);
    }

    /* something else... */
}

Для вашего кода jQuery убедитесь, что thet: $("table tr:not(:first)") do возвращает массив содержит не менее 1 предмета. (Вы можете убедиться в этом, выполнив console.log(phieuBanHang), чтобы распечатать ваши данные).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...