نمایش نتایج 1 تا 6 از 6

نام تاپیک: مشکل در پاس کردن اطلاعات به ViewModel

  1. #1
    کاربر تازه وارد آواتار amir_monster1
    تاریخ عضویت
    مهر 1392
    محل زندگی
    اصفهان
    پست
    40

    Question مشکل در پاس کردن اطلاعات به ViewModel

    با درود
    من دو مدل تعریف کردم به شکل زیر

    public class Estates
    {
    public int id { set; get; }
    public string City { set; get; }
    }
    public class Options
    {
    public int id { set; get; }
    public string Address { set; get; }
    }

    و سپس یک ViewModel برای این دو مدل و بکارگیری آن در یک View


    public class MyViewModels
    {
    public IEnumerable<Estates> Estate { get; set; }
    public IEnumerable<Options> Option { get; set; }
    }

    و گرفتن اطلاعات از بانک با کوئری Linq

    public ActionResult Index()
    {
    EstateContext db = new EstateContext();

    var data = (from s in db.Estate
    from c in db.Option
    select s).ToList();

    return View(data);
    }

    و View متناظر با این اکشن که 2 مدل در آن نمایش داده میشود

    @model Amlak.ViewModels.MyViewModel

    @foreach (var item in Model.Estate)
    {
    @item.City
    }

    @foreach (var item in Model.Option)
    {
    @item.Address
    }

    اما با اجرای برنامه خطای زیر داده میشه

    The model item passed into the dictionary is of type 'System.Collections.Generic.List`1[Amlak.Models.Estates]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[Amlak.ViewModels.MyViewModels]'.

    دو روزه گرفتار این خطا شدم

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

  2. #2
    کاربر دائمی
    تاریخ عضویت
    مهر 1388
    محل زندگی
    کرمانشاه
    سن
    37
    پست
    735

    نقل قول: مشکل در پاس کردن اطلاعات به ViewModel

    دوست عزیز مشکل شما توی اکشن index
    قرار نیست هر اطلاعاتی از بانک بخونید و بفرستید به ویو ، خودش جایگزین ویو مدل بشه
    شما توی اکشن index یک شی از نوع MyViewModel تعریف کنید و توسط این شی Estate وOptions رو مقداردهی کنید و سپس به ویو ارسال نمایید

    MyViewModel mymodel=new MyViewModel ()
    mymodel.EState=...
    mymodel.Options=...
    return View(mymodel);

  3. #3

    نقل قول: مشکل در پاس کردن اطلاعات به ViewModel

    بنویس ببین درست میشه

    @model IEnumerable[ Amlak.ViewModels.MyViewModel]

  4. #4
    کاربر تازه وارد آواتار amir_monster1
    تاریخ عضویت
    مهر 1392
    محل زندگی
    اصفهان
    پست
    40

    نقل قول: مشکل در پاس کردن اطلاعات به ViewModel

    ممنون آقای رضایی از جوابتون اما اگر بخواهیم در یک دستور مدل ها را مقدار دهی کنیم چه راه حلی هست ؟

    در خیلی از کوئری های Linq یا EF اطلاعات چند جدول یا چند مدل به یک شی داده میشه یا به یک متغیر مثل زیر

    var data = (from s in db.Estate
    from c in db.Option
    select s).ToList();

    و یا

    var posts = ctx.Tags.Where(x => x.Name == "Tag1").SelectMany(x => x.BlogPosts);
    return View(posts);
    حالا چطور به یک ویو این اطلاعات پاس میشه ؟

    آخرین ویرایش به وسیله amir_monster1 : سه شنبه 05 اسفند 1393 در 09:49 صبح

  5. #5
    کاربر تازه وارد آواتار amir_monster1
    تاریخ عضویت
    مهر 1392
    محل زندگی
    اصفهان
    پست
    40

    نقل قول: مشکل در پاس کردن اطلاعات به ViewModel

    نقل قول نوشته شده توسط RIG000 مشاهده تاپیک
    بنویس ببین درست میشه

    @model IEnumerable[ Amlak.ViewModels.MyViewModel]
    نه به این شکل هم امتحان کردم و همان خطا

  6. #6

    نقل قول: مشکل در پاس کردن اطلاعات به ViewModel

    به نظر من هم جواب آقای رضایی درسته. خطایی که به شما میده اینه که انتظار داره یک MyViewModels بهش داده بشه اما System.Collections.Generic.List بهش میدین .کد آقای رضایی رو میشه به اسن صورت هم نوشت:


    var mymodel=new MyViewModel{
    EState=...
    Options=...
    }
    return View(mymodel);


    اما اگر بخواهید کد تون رو به صورت زیر بنویسید:


    var posts = ctx.Tags.Where(x => x.Name == "Tag1").SelectMany(x => x.BlogPosts);


    باید در View هم تغییر بدید و مدل را هم همان نوع BlogPosts قرار دهید. به عنوان مثال:


    @model List<DBContetxt.BlogPosts>
    آخرین ویرایش به وسیله karadous : دوشنبه 11 اسفند 1393 در 16:11 عصر

تاپیک های مشابه

  1. مشکل با پاس کردن اطلاعات یک فرم که با جاوااسکریپت پرشده
    نوشته شده توسط m.yazdian در بخش ASP.NET Web Forms
    پاسخ: 0
    آخرین پست: سه شنبه 26 دی 1391, 11:24 صبح
  2. پاسخ: 1
    آخرین پست: سه شنبه 21 اسفند 1386, 11:03 صبح
  3. مشکل در وارد کردن اطلاعات در DataGridView.
    نوشته شده توسط hdv212 در بخش C#‎‎
    پاسخ: 4
    آخرین پست: یک شنبه 09 اردیبهشت 1386, 19:42 عصر
  4. مشکل در وارد کردن اطلاعات در دیتابیس!
    نوشته شده توسط M.kavyani در بخش VB.NET
    پاسخ: 8
    آخرین پست: شنبه 12 شهریور 1384, 00:06 صبح
  5. مشکل با وارد کردن اطلاعات
    نوشته شده توسط ealireza در بخش SQL Server
    پاسخ: 4
    آخرین پست: پنج شنبه 22 بهمن 1383, 19:59 عصر

قوانین ایجاد تاپیک در تالار

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