دسته بندی ها
23:37 1399/11/09

نمایش منوهای سایت به صورت کشویی در Asp.net Core

مشخصات سوال کننده :
کاربر : mojtabaqwqxfrcv     امتیاز کاربر : ‎−7     رتبه کاربر : 7088
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 2191
پاسخ دهنده : mojtabaqwqxfrcv 19:56 1399/11/10

کسی نیست؟؟؟؟؟؟؟؟؟؟؟کمکم کنه؟؟

به این پاسخ امتیاز بدهید    0
امتیاز: ‎−7 رتبه: 7088
پاسخ دهنده : mohammad-i 23:57 1399/11/10

"موبایل" و "اپل" جفتشون توی یک level هستن. یعنی جفتشون منوی اصلی هستن.

 برای ایحاد زیر منو دو راه دارید:

1- باید یک جدول دیگه برای زیر منوها ایجاد کنید و یک فیلد به عنوان کلید خارجی بزاری براش( که این فیلد میشه آیدی منوی اصلی)

2- توی همین جدول یک فیلد دیگه بزاری که مشخص کنه آیا این آیتم منوی اصلی هست یا زیر منو. و اگه زیرمنو بود، آیدی منوی اصلیش چیه

به این پاسخ امتیاز بدهید    1
امتیاز: 260 رتبه: 7
پاسخ دهنده : fateme 00:17 1399/11/11

شما توی جدول خودتون منوی اصلی و زیر منو رو مشخص کردید. یعنی 2 سطح از منو رو مشخص کردید. سطح سوم که همون "اپل" هست رو نمیتونید توی این ساختار نمایش بدید. یه جدول دیگه ایجاد کنید برای نگهداری سطح سوم.

public class submenu
{
   [Key]
   public int submenuid {get; set;}
   public string submenuName {get; set;}
   public int groupId {get; set;}

   [ForeignKey("groupId")]
   public virtual GroupTbl grp {get; set;}
}

جدول بالا برای نگهداری سطح سوم میتونید استفاده کنید. فیلد groupId هم کلید خارجی در جدول GroupTbl هست. حالا موقع استفاده کافیه جدول اول و جدول دوم رو با هم Join کنید و اطلاعات رو نمایش بدید.

خب در ابتدا یک ویومدل بسازید که بتونید همه منوها و زیرمنوها رو توش نگهداری کنید.

public class MenuViewModel
{
   public int GroupId {get; set;}
   public string GroupTitle {get; set;}
   public bool IsDelete {get; set;}
   public int ParentId {get; set;}

   public List<subMentTbl> submenu {get; set;}
}

 

حالا کافیه کوئری خودتون رو بنویسید و لیست منوها و همه زیرمنوها رو داشته باشید.

   var query = from g in _context.GroupTbl select new MenuViewMode
   {
       GroupID = g.GroupId,
       GroupTitle = g.GroupTitle,
       IsDelete = g.IsDelete,
       ParentId = g.ParentId,
       subMenu = _context.submenuTbl.where(s=>s.GroupId == g.GroupId).ToList()
   };
   return query.ToList();

 

الان شما همه منوها و زیر منوها رو دارید و به راحتی میتونید توی View نمایش بدید.

@foreach (var item in Model)
{
   if (Model.ParentID == null)
   {
      <ul>سطح اول</ul>
   }
   else
   {
      <ul>
          سطح دوم
            if (item.subMenu.Count <> 0)
            {
              <ul>سطح سوم</ul>
            }
      </ul>
   }
}

 

به این پاسخ امتیاز بدهید    1
امتیاز: 1617 رتبه: 2
پاسخ دهنده : mojtabaqwqxfrcv 01:01 1399/11/11

الان چطور میتونم که داخل همین جدول اضافه کنم

که اگه داشت؟؟؟

به این پاسخ امتیاز بدهید    ‎−1
امتیاز: ‎−7 رتبه: 7088
1 نظر
pedram_khan : لطفا اگر نظری در مورد پاسخ ها دارید به صورت "نظر" ثبت کنید تا بقیه منظور شما رو متوجه بشن که با کدوم پاسخ هستید. دکمه نظر رو بزنید و نظراتتون رو بگید. (منظور اینه نظر رو به صورت پاسخ ثبت نکنید)

امتیاز کاربر : 274   رتبه کاربر : 6   تاریخ ثبت : 01:21 1399/11/11
پاسخ دهنده : mojtabaqwqxfrcv 01:25 1399/11/11

من این اولین باره با code first میزنم اگه میشه بیشتر توضیح بدید؟؟؟؟

ممنون میشم؟؟؟

به این پاسخ امتیاز بدهید    ‎−1
امتیاز: ‎−7 رتبه: 7088
2 نظر
fateme : فکر میکنم بهتره ابتدا کدفرست رو یاد بگیرید. چون الان ما هر چی هم توضیح بدیم چون شما با انتیتی فریم ورک کد فرست آشنا نیستید هیچ فایده ای نداره.

امتیاز کاربر : 1617   رتبه کاربر : 2   تاریخ ثبت : 06:28 1399/11/11
mojtabaqwqxfrcv : نه فقط شما بگید داخل همین جدول چی اضافه کنم جدول گروپ

امتیاز کاربر : ‎−7   رتبه کاربر : 7088   تاریخ ثبت : 07:15 1399/11/11
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود