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

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

کاربر سایت

reza

عضویت از 1392/02/15

ارسال اطلاعات به ویومدلviewmodel

  • دوشنبه 9 اردیبهشت 1398
  • 18:42
تشکر میکنم

سلام و احترام.
در هنگام ارسال اطلاعاتی  به ویو مدل با خطای 
he model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Muller.Domain.Models.AboutUsModel]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[Muller.ViewModel.AboutUsViewModel]'.
مواجه می شوم.اگر بخواهم به صورت  مستقیم هم ایتم ها رو به viewmodel تبدیل کنم ،فیلد ها شناخته نمی شوند.کد زیر

//var obj = new AboutUsViewModel()
            //{
            //    Id = item.id,
            //    IsDeleted = false,
            //    RegisterDate = DateTime.Now,
            //    AboutUsEn = "asd",
            //    AboutUsFa = "adas"

            //};

چطور می توانم اطلاعات را به ویومدل ارسال کنم؟

از الگوی جنریک ریپوزیتوری استفاده کردم.

ممنون

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

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

AmirGhasemi

عضویت از 1392/02/25

  • سه شنبه 10 اردیبهشت 1398
  • 08:03

سلام

برادر جان اگر بصورت جنریک استفاده کرده ای خب باید موقع تعریف هم کلاس سازنده را بهش معرفی کنی!!!

من بقیه ی گروژه ام را ندیده ام اما حدس می زنم از روی ارور که کلاست را بصورت اینترفیس از کلاس دیگری ارث می بری!

AboutUsViewModel<T>(){}

کاربر سایت

محمد قاری

عضویت از 1395/02/07

  • سه شنبه 10 اردیبهشت 1398
  • 10:01

با سلام

لطفا اطلاعات بیشتری را از این موضوع و خود ماهیت ViewModel تون قرار بدید تا بتونیم راهنماییتون کنیم

کاربر سایت

reza

عضویت از 1392/02/15

  • سه شنبه 10 اردیبهشت 1398
  • 11:49

متشکرم.

من از الگوی جنریک ریپوزیتوری استفاده کردم.

نمونه Context:

        public DbSet<Muller.Domain.Models.AboutUsModel> AboutUsModel { get; set; }

مدل

[Key]
        public long Id { get; set; }
        public DateTime RegisterDate { get; set; }
        public bool IsDeleted { get; set; }

        //[AllowHtml]
        //[DataType (DataType.MultilineText)]
        //[Display(Name ="متن درباره ما-فارسی")]
        public string AboutUsFa { get; set; }//About Us Persian

        //[AllowHtml]
        //[DataType(DataType.MultilineText)]
        //[Display(Name = "متن درباره ما-انگلیسی")]

        public string AboutUsEn { get; set; }//About Us English

ویومدل

[Key]
        public long Id { get; set; }
        public DateTime RegisterDate { get; set; }
        public bool IsDeleted { get; set; }


        [AllowHtml]
        [DataType(DataType.MultilineText)]
        [Display(Name = "متن درباره ما-فارسی")]
        public string AboutUsFa { get; set; }//About Us Persian

        [AllowHtml]
        [DataType(DataType.MultilineText)]
        [Display(Name = "متن درباره ما-انگلیسی")]

        public string AboutUsEn { get; set; }//About Us English

و لایه سرویس

public IEnumerable<AboutUsModel> GetAllAboutUs()
        {
            var query = _db.AboutUsRepository.Get();
                 
            return query.ToList();
        }

و اکشن به صورت

 public ActionResult Index()
        {

            AboutUsService objectme = new AboutUsService();
            AboutUsViewModel ab = new AboutUsViewModel();

            List<AboutUsViewModel> empViewModels = new List<AboutUsViewModel>();

            var item = objectme.GetAllAboutUs();

           


            var obj = new AboutUsViewModel()
            {
                Id = empViewModels.Id,
                IsDeleted = false,
                RegisterDate = DateTime.Now,
                AboutUsEn = "asd",
                AboutUsFa = "adas"

            };

            return View(item);
        }
ریپوزیتوری هم
 public virtual IEnumerable<Tentity> Get(Expression<Func<Tentity, bool>> where = null, Func<IQueryable<Tentity>, IOrderedQueryable<Tentity>> orderby = null, string includes = "")
        {
            IQueryable<Tentity> query = _dbset;
            if (where != null)
            {
                query = query.Where(where);
            }
            if (orderby != null)
            {
                query = orderby(query);
            }

            if (includes != "")
            {
                foreach (string includ in includes.Split(','))
                {
                    query = query.Include(includ);
                }
            }
            return query.ToList();
        }

نوشته شده.

برداشت من از راهنمایی قبلی این بود که ویو مدل باید به صورتی به شکل جنریک به جنریک ریپوزیتوری تبدیل بشه.

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

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

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

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

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