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

نام تاپیک: نمایش دادهها در ویوی متعلق به ViewComponent

  1. #1

    نمایش دادهها در ویوی متعلق به ViewComponent

    سلام

    من میخام یه ویوکامپوننت برای قسمت topmenu بنویسم ، مشکل من در قسمت ویو هست که چطور با استفاده از ویومدل، منوها را نمایش بدم . ممنون

      public class TopMenuViewComponent : ViewComponent    {
    private readonly DataContext _dataContext;
    public TopMenuViewComponent(DataContext dataContext)
    {
    _dataContext = dataContext;
    }
    public async Task<IViewComponentResult> InvokeAsync()
    {
    var qMenu = (from rows in _dataContext.Menus
    select new MenuViewModel
    {
    Id = rows.Id,
    Name = rows.Name,
    URL = rows.URL
    }).ToList();
    return await Task.FromResult((IViewComponentResult)View("Defaul t", qMenu));
    }
    }


    و یک ویو مدل برای اون در نظر گرفتم :

      public class MenuViewModel    {
    public int Id { get; set; }
    public string Name { get; set; }
    public string URL { get; set; }
    public int ParentId { get; set; }


    }


    و در صفحه html بصورت زیر عمل کردم :

    @model MenuViewModel

    @foreach (var item in Model.Where(@item.ParentId == 0))
    {


    <li class="has-dropdown megamenu">
    <a asp-area="" asp-controller=@item.Name asp-action=@item.Name>@item.Name</a>
    </li>
    }



    در این صفحه هر کاری میکنم و هر کدی می نویسم نمیتونم با ویو مدل ارتباط رو برقرار کنم و خطا ی experssion دارم . ممنون

  2. #2

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent

    در Razor و یا همون فایلهای با پسوند cshtml وقتی درون حلقه هستید دیگه نیاز به استفاده از @ ندارید. از item در Foreach کاراکتر @ را حذف کنید.

  3. #3

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent

    ممنون . ولی item رو نمیشناسه و ارور میده در این حالت .
    مسیری رو که من رفتم درسته ؟ یعنی برای ویوکامپوننتها یک ویومدل درنظر بگیرم و در ویوکامپوننت دستورات لینک رو بنویسم و از ریپازیتوری در این حالت استفاده نشه ؟

  4. #4

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent


    @foreach (var item in Model.Where(m=>m.ParentId == 0))
    {


    <li class="has-dropdown megamenu">
    <a asp-area="" asp-controller=@item.Name asp-action=@item.Name>@item.Name</a>
    </li>
    }

  5. #5

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent

    ممنون . با این روش هم درست نشد این ارور رو میده و where رو در این حالت صحیح نمیدونه .

    'MenuViewModel' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument of type 'MenuViewModel' could be found (are you missing a using directive or an assembly reference?)

    +
    • @foreach (var item in Model.Where(n => n.ParentId == 0))



  6. #6

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent

    خب شما باید Linq رو به ویو اضافه کنید.


    @using System.Linq

  7. #7

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent

    ممنون . اضافه کردم اما همچنان همون ارور ر میده . و این خط کد هم خاکستری هست (منظورم اینه که زمانیکه mvc به using احتیاج نداره اون رو به رنگ خاکستری در میاره )

    بجای استفاده از @model menuviewmodel از کد زیر استفاده کردم :

    @model IEnumerable<MenuViewModel>



    توضیحاتش رو از داکیومنتها خوندم . اما درست توجیه نشدم . ممنون میشم توضیح بدین چرا باید به این روش کار کنیم ؟
    آخرین ویرایش به وسیله elham9 : یک شنبه 03 تیر 1397 در 18:00 عصر

  8. #8

    نقل قول: نمایش دادهها در ویوی متعلق به ViewComponent

    وقتی لازمه در بین آیتم های یک آرایه گردش کنید باید از IEnumerable استفاده کنید.

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

  1. عدم نمایش منو در IE 7 به بعد
    نوشته شده توسط naeeme در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 20 فروردین 1390, 12:37 عصر
  2. پاسخ: 3
    آخرین پست: جمعه 12 فروردین 1390, 08:17 صبح
  3. نمایش ؟؟؟ در دیتاگرید ویو به جای کاراکتر فارسی
    نوشته شده توسط Glx.Mzf در بخش C#‎‎
    پاسخ: 4
    آخرین پست: پنج شنبه 07 بهمن 1389, 01:41 صبح
  4. نمایش اطلاعات در دیتا گرید به صورت درختی
    نوشته شده توسط m * h * d در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 11 دی 1389, 15:23 عصر
  5. نمایش اطلاعات در gridviewwبا توجه به شرط
    نوشته شده توسط tanha_nabash در بخش ASP.NET Web Forms
    پاسخ: 4
    آخرین پست: شنبه 28 اردیبهشت 1387, 15:16 عصر

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

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