سلام و احترام.
در هنگام ارسال اطلاعاتی به ویو مدل با خطای
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" //};
چطور می توانم اطلاعات را به ویومدل ارسال کنم؟
از الگوی جنریک ریپوزیتوری استفاده کردم.
ممنون
سلام
برادر جان اگر بصورت جنریک استفاده کرده ای خب باید موقع تعریف هم کلاس سازنده را بهش معرفی کنی!!!
من بقیه ی گروژه ام را ندیده ام اما حدس می زنم از روی ارور که کلاست را بصورت اینترفیس از کلاس دیگری ارث می بری!
AboutUsViewModel<T>(){}
با سلام
لطفا اطلاعات بیشتری را از این موضوع و خود ماهیت ViewModel تون قرار بدید تا بتونیم راهنماییتون کنیم
متشکرم.
من از الگوی جنریک ریپوزیتوری استفاده کردم.
نمونه 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(); }
نوشته شده.
برداشت من از راهنمایی قبلی این بود که ویو مدل باید به صورتی به شکل جنریک به جنریک ریپوزیتوری تبدیل بشه.
ممنون میشم راهنمایی کنید.
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)