مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

engineer1990

عضویت از 1394/11/28

ارسال ليستي از كلاس ( مدل ) به كنترلر

  • یکشنبه 16 آبان 1395
  • 14:43
تشکر میکنم

سلام

من يه مشكل دارم و اونم اينه كه توي يكي از فرمهاي برنامه كاربر يه checklistbox  داره كه ايتم هاي مورد نظرش رو مارك ميكنه و به همراه يه سري داده ديگه ذخيره ميكنه در واقع هر كدوم از موارد مارك شده قراره يه ركورد جديد در ديتابيس بشن (ليستي از مدل). مقادير سمت كلاينت  پر ميشه و ليست ساخته ميشه اما زماني كه به سمت كنترلر ارسالشون ميكنم مقدار null  به من نشون ميده يا تعداد ركوردها رو شناسايي ميكنه ولي مقداري توشون نيست تقريبا از همه چيزايي كه ميشد استفاده كردم: سمت كنترلر از JObject  از JArray از List<model> از خود مدل از object ، خلاصه از همه چي استفاده كردم كه مقدار ها رو توي خودش داشته باشه ولي بازم نشده

    function Save() {
        debugger;
        var CarClassListVal = null;
        CarClassListVal = [];

        $('.checkboxBodySubClass:checked').each(function () {
            CarClassListVal.push($(this).attr('value'));
        });

        if (CarClassListVal == null) {
            swal("خطا", "كاربر گرامي لطفا زير كلاس مورد نظر خود را انتخاب نمائيد", 'Error')
        }
        else {

            var ModelList = []; // <-- declare as array

            var Datamodel =
            {
                "Status":"",
                "PartTraceCodeExceptionID":"",
                "SubClassId": "",
                "StartDate": "",
                "EndDate": "",
                "StartTime": "",
                "EndTime": ""
            };

            $.each(CarClassListVal, function (i, item) {

                Datamodel.Status = $("#Status").is(":checked");
                Datamodel.PartTraceCodeExceptionID = $("#PartTraceCodeExceptionID").val();
                Datamodel.SubClassId = CarClassListVal[i];
                Datamodel.StartDate = $("#StartDate").val();
                Datamodel.EndDate = $("#EndDate").val();
                Datamodel.StartTime = $("#StartTime").val();
                Datamodel.EndTime = $("#EndTime").val();

                ModelList.push({ 'ModelList': Datamodel });
            });
            
            var model = JSON.stringify(ModelList);

            $.ajax({
                //type: 'POST',
                //data: JSON.stringify(model),
                //contentType: 'application/json; charset=utf-8',
                //dataType: 'json',
                url: "/PartTraceExceptions/Create/",
                type: "Post",
                dataType: "JSON",
                //contentType: 'application/json; charset=utf-8',
                data: { "model": ModelList },

                success: function (data) {
                    debugger;
                    if (data == true) {
                        FillGridView();
                        CleanPage();
                        swal("پيغام", "عمليات با موفقيت انجام شد", 'success')

                    } else {
                        swal("خطا", data, 'Error')

                    }
                }
            });

            //$.post("/PartTraceExceptions/Create/", JSON.stringify(model),
            //    function (data) {
            //        debugger;
            //        if (data == true) {
            //            FillGridView();
            //            CleanPage();
            //            swal("پيغام", "عمليات با موفقيت انجام شد", 'success')

            //        } else {
            //            swal("خطا", data, 'Error')

            //        }
            //    }, 'json');
        }
    };

كد سمت كنترلر هم به صورت زيره :

        [HttpPost]
        public ActionResult Create(JObject ModelList)   
        {
      
        }

ممنون ميشم راهنمايي كنيد

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 16 آبان 1395
  • 16:39

این لینک رو ببینید

کاربر سایت

engineer1990

عضویت از 1394/11/28

  • دوشنبه 17 آبان 1395
  • 08:20

لينك رو نگاه كردم، من تا زماني كه كنترلر صدا زده شه مشكلي ندارم و modellist  پر ميشه ولي سمت كنترلر مقادير رو خالي نشون ميده . check listbox  خودم رو به وسيله table  ايجاد كردم و وقتي كه ذخيره ميكنه يه loop  ميزنم روي اونايي كه مارك خورده و توي modellist نگه ش ميداره ولي همين كه ميره سمت كنترلر چيزي توي مدل نيست و null مقدارشه. 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 17 آبان 1395
  • 12:03

نباید حلقه بزنید

باید CheckBox ها بایک نام به سمت کنترلر ارسال بشوند

اینجوری میتونید لیستی از اون نوع یا مدل صفحه را داشته باشید

در نمونه ها اینکار انجام شده

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)