отправить значения массива из представления в контроллер без создания фреймов в mvc - PullRequest
0 голосов
/ 22 сентября 2019
`hello friends

Я разрабатываю форму ввода основных данных без использования каркаса объектов.У меня есть две таблицы создания и обработки деталей, для этого я передаю значения master и detail контроллеру с помощью вызова ajax.все идет хорошо, и все записи поступают в контроллер, я проверяю это, устанавливая точку останова.но проблема в том, что при проверке состояния модели она не идет внутрь.Это дает статической модели false и дает ошибку «Представление результатов = Расширение представления результатов будет перечислять IEnumerable».

please help me to resolve my issue

мой вызов ajax в представлении, создающий объекты детализации сделки

        var dealDetail = {  "ItemSysSeq": "", "Qty": "", "UnitPrice": "" };

        // creating deal master objects

        var DealMaster = { "DealSysSeq": "", "DealCode": "", "DealName": "", "ActiveFromDate": "", "ActiveToDate": "", "TotalCost": "", "Discount": "", "Dealoffer": "", "Remarks": "", "DealDetails": [] };

        //  // Set Deals Master Value
        DealMaster.DealSysSeq = 0;
        DealMaster.DealCode = $("#DealCode").val();
        DealMaster.DealName = $("#DealName").val();
        DealMaster.ActiveFromDate = $("#dateFrom").val
        DealMaster.ActiveToDate = $("#dateTo").val();
        DealMaster.TotalCost = $("#lblTotal").val();
        DealMaster.Discount = $("#txtdiscount").val();
        DealMaster.Dealoffer = $("#txtoffer").val();
        DealMaster.Remarks = $("#txtremarks").val();


        //creating the array and set the deal detail values

        //$('#stockitemError').text('');
        var stockvalues = [];
        //var erroritemcount = 0;

        $('#Dealdetailitems  tr').each(function (tr) {

            //if (
            //    $('select.pc', this).val() == "0" ||
            //    $('.txtQty', this).val() == "" ||
            //    isNaN($('.txtQty', this).val()) ||
            //    $('.txtopeningBalance', this).val() == "" ||
            //    isNaN($('.txtopeningBalance', this).val())
            //)
            //{
            //    erroritemcount++;
            //    $(this).addClass('error');


            //}



            //else {


            dealDetail.ItemSysSeq = $('select.pc', this).val(),
            dealDetail.Qty = parseFloat($('.txtQty', this).val()),
            dealDetail.UnitPrice = parseFloat($('.txtUnitPrice', this).val())

            DealMaster.DealDetails.push(dealDetail);

            dealDetail = { "ItemSysSeq": "", "Qty": "", "UnitPrice": "" };

            //}

        });


        // Set Ajax Post

        $.ajax({

            url: '/DealMaking/Create',

            data: JSON.stringify(DealMaster),

            //traditional: true,

            type: "POST",

            dataType: 'JSON',

            contentType: "application/json;  charset=utf-8",

            success: function (result) {

                //check is successfully save to database

                if (result.Scccess == 1) {

                    //will send status from server side

                    alert('Successfully done.');
                }

                else {
                    alert(result.ex);
         }
       }
   });
    });
//my controller
 public JsonResult Create( ClsDealMaking clsDeal )
        {
            bool status = false;

            if (ModelState.IsValid)
            {

                using (SqlConnection sqlCon = new SqlConnection(obj_conn.Conn()))
                {

                    sqlCon.Open();
                    string query = "INSERT INTO [dbo].[DealMaking] (DealCode,DealName,ActiveFromDate,ActiveToDate,TotalCost,DiscountInPercentage,DealOffer,Remarks) ";
                    query = query + "OUTPUT inserted .itemSysSeq Values(@DealCode,@DealName,@ActiveFromDate,@ActiveToDate,@TotalCost,@DiscountInPercentage,@DealOffer,@Remarks)";
                    SqlCommand sqlCmd = new SqlCommand(query, sqlCon);
                    sqlCmd.Parameters.AddWithValue("@DealCode", clsDeal.DealCode);
                    sqlCmd.Parameters.AddWithValue("@DealName", clsDeal.DealName);
                    sqlCmd.Parameters.AddWithValue("@ActiveFromDate", (object)clsDeal.ActiveFromDate.ToShortDateString() ?? DBNull.Value);
                    sqlCmd.Parameters.AddWithValue("@ActiveToDate", (object)clsDeal.ActiveToDate.ToShortDateString() ?? DBNull.Value);
                    sqlCmd.Parameters.AddWithValue("@TotalCost", (object)clsDeal.TotalCost ?? DBNull.Value);
                    sqlCmd.Parameters.AddWithValue("@DiscountInPercentage", (object)clsDeal.Discount ?? DBNull.Value);
                    sqlCmd.Parameters.AddWithValue("@DealOffer", (object)clsDeal.Dealoffer ?? DBNull.Value);
                    sqlCmd.Parameters.AddWithValue("@Remarks", (object)clsDeal.Remarks ?? DBNull.Value);
                  //  sqlCmd.Parameters.AddWithValue("@DealImage", (object)clsDeal.DealImage ?? DBNull.Value);

                    clsDeal.DealSysSeq = (int)sqlCmd.ExecuteScalar();

                 }

            }

            }

            return Json(JsonRequestBehavior.AllowGet);
        }

and model is//

 public class ClsDealMaking
    {
        public int DealSysSeq { get; set; }
        public string DealCode { get; set; }
        public string DealName { get; set; }
        public DateTime ActiveFromDate { get; set; }
        public DateTime ActiveToDate { get; set; }
        public double TotalCost { get; set; }
        public double Discount { get; set; }
        public double Dealoffer { get; set; }
        public string Remarks { get; set; }
       // public Byte[] DealImage { get; set; }
        public virtual ICollection<clsDealDetail> DealDetails { get; set; }
    }
...