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

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

تاپیک مورد نظر بسته شده است

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

حل ارور The parameters dictionary contains a null entry for parameter 'resiver' of non-nullable ' هنگام ارسال پارامتر ها با json

  • دوشنبه 13 فروردین 1397
  • 22:19
تشکر میکنم

سلام دوستان. من سه تا پارامتر رو با json به کنترلر می فرستم

function() {
                var resiver = document.getElementById('ResiverId').value;
                var msgtext = document.getElementById('MessageText').value;
                var msgtitle = document.getElementById('Title').value;

                var msgData = [['resiver', 'msgtext', 'msgtitle'],
                    [resiver, msgtext, msgtitle]]; 
                var json = JSON.stringify(msgData);
                $.ajax({
                    type: "POST",
                    url: '/Users/Messages/SendMessageJson/',
                    contentType: "application/json; charset=utf-8",
                    //data: { "resiver": resiver, "msgtext": msgtext, "msgtitle": msgtitle },
                    data:json,
                    datatype: "json",
                    success: function () {
                        alert('پیام با موفقیت ارسال شد');
                        $('.col-lg-10').load('/Users/Messages/ShowInbox/');
                    },
                    error: function (jqXHR, exception) {
                        alert('خطایی رخ داده است');
                        var msg = '';
                        if (jqXHR.status === 0) {
                            msg = 'Not connect.\n Verify Network.';
                        } else if (exception === 'parsererror') {
                            msg = 'Requested JSON parse failed.';
                        } else if (exception === 'timeout') {
                            msg = 'Time out error.';
                        } else if (exception === 'abort') {
                            msg = 'Ajax request aborted.';
                        } else {
                            msg = 'Uncaught Error.\n' + jqXHR.responseText;
                        }
                        $('.ssss').html(msg);
                    }
                });
            });

و کد متد توی کنترلر من هم به این صورته:

public JsonResult SendMessageJson(int resiver, string msgtext,string msgtitle)
        {
            Message msg = new Message();
            msg.IsRead = false;
            msg.MesageDate = DateTime.Now;
            msg.SenderId= db.Users.FirstOrDefault(b => b.UserName == User.Identity.Name).UserId;
            msg.ResiverId= resiver;
            msg.MessageText = msgtext;
            msg.Title = msgtitle;
            db.Messages.Add(msg);
            db.SaveChanges();
            return Json(true, JsonRequestBehavior.AllowGet);
        }

زمانی که من فیلد ها رو پر می کنم و متد json رو فراخونی می کنم این موارد بدست میاد:

function() {
                var resiver = 24;
                var msgtext = متن تستی برای ارسال پیام;
                var msgtitle = متن تستی برای ارسال پیام;

                var msgData =عکسش مقدار هاشو پایین گذاشتم 
                var json = "[[\"resiver\",\"msgtext\",\"msgtitle\"],[\"24\",\"متن تستی برای ارسال پیام\",\"تست ارسال پیام\"]]";
                $.ajax({
                    type: "POST",
                    url: '/Users/Messages/SendMessageJson/',
                    contentType: "application/json; charset=utf-8",
                    //data: { "resiver": resiver, "msgtext": msgtext, "msgtitle": msgtitle },
                    data:json,
                    datatype: "json",
                    success: function () {
                        alert('پیام با موفقیت ارسال شد');
                        $('.col-lg-10').load('/Users/Messages/ShowInbox/');
                    },
                    error: function (jqXHR, exception) {
                        alert('خطایی رخ داده است');
                        var msg = '';
                        if (jqXHR.status === 0) {
                            msg = 'Not connect.\n Verify Network.';
                        } else if (exception === 'parsererror') {
                            msg = 'Requested JSON parse failed.';
                        } else if (exception === 'timeout') {
                            msg = 'Time out error.';
                        } else if (exception === 'abort') {
                            msg = 'Ajax request aborted.';
                        } else {
                            msg = 'Uncaught Error.\n' + jqXHR.responseText;
                        }
                        $('.ssss').html(msg);
                    }
                });
            });

بعد متد json تایید نمیشه (success) و میره به ارور(error) ارورش هم این میشه

The parameters dictionary contains a null entry for parameter 'resiver' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.JsonResult SendMessageJson(Int32, System.String, System.String)' in 'Labkhand.Areas.Users.Controllers.MessagesController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters

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

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

mohammad-zarei62

عضویت از 1396/12/18

  • سه شنبه 14 فروردین 1397
  • 00:08

حل شد دوستان

$.ajax({
                    type: "POST",
                    url: '/Users/Messages/SendMessageJson/',
                    contentType: "application/json; charset=utf-8",
                    data: JSON.stringify({
                        "resiver": resiver,
                        "msgtext": msgtext,
                        "msgtitle": msgtitle
                    }),

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

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

تاپیک مورد نظر بسته شده و امکان درج پاسخ وجود ندارد

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

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