如何按子类别创建动态子菜单

2024-04-14

我正在设置一个菜单Sub-menu展示Sub-categories,在数据库中我创建了一列isSelected具有布尔数据类型。要是Sub-categories is isSelected == true,它将显示在主页上。我想知道如何设置Sub-categories with isSelected == true显示于Menu on the header.

IQueryable<ProductSubcategory> list = null;
            if (Id == null)
            {
                list = BikesDB.ProductSubcategories;
            }
            else
            {
                int id = Id.Value;
                list = BikesDB.ProductSubcategories.Where
                (m => m.ProductSubcategoryID == id && m.NameofBike == Name);
            }

            var bikes = list.Where(m => m.isSelected == true)
                .AsEnumerable().Select
                (p => new Bike { Id = p.ProductSubcategoryID, Name = p.NameofBike });

            var viewModel = new CategoriesIndexViewModel
            {
                NumberOfModel = bikes.Count(),
                NameofBike = bikes.Select(b=>b.Name).ToList(),
                Bikes = bikes.ToList()
            };
            return this.View(viewModel);

现在我只是将三个子菜单硬编码在HTML:

<li>
  <a href="@Url.Content("~/Bike/")">Home</a>
     <ul>
        <li>
           <a href="@Url.Content("~/Bike/Categories/1?name=Mountain Bikes&class=image")">Mountain Bikes</a>
        </li>
        <li>
           <a href="@Url.Content("~/Bike/Categories/2?name=Road Bikes&class=image")">Road Bikes</a>
        </li>
         <li>
           <a href="@Url.Content("~/Bike/Categories/3?name=Touring Bikes&class=image")">Touring Bikes</a>
          </li>
     </ul>

检查这是否有帮助。

public abstract class BaseController : Controller
{

    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        IEnumerable<MVC3Stack.Models.MenuItem> menus = BuildMenu();
        ViewBag.Menus = menus;
        //base.OnActionExecuting(filterContext);
    }

    private IEnumerable<MVC3Stack.Models.MenuItem> BuildMenu()
    {
        IEnumerable<MVC3Stack.Models.MenuItem> menus = new List<MVC3Stack.Models.MenuItem>
        {
            new MVC3Stack.Models.MenuItem{Id = 1, Level = 0, ParentId = 0, Text = "Main", Url = Url.Action("Index", "Home"), IsSelected=true, HasChildren=true },
            new MVC3Stack.Models.MenuItem { Id = 2, Level = 1, ParentId = 1, Text = "Main-SubMenu1", Url = Url.Action("Index", "Home"), IsSelected=false, HasChildren=false },
            new MVC3Stack.Models.MenuItem { Id = 3, Level = 1, ParentId = 1, Text = "Main-SubMenu2", Url = Url.Action("Index", "Home"), IsSelected=true , HasChildren=false},
            new MVC3Stack.Models.MenuItem { Id = 4, Level = 0, ParentId = 0, Text = "Second Menu", Url = Url.Action("Index", "Home") ,IsSelected=true, HasChildren=true},
            new MVC3Stack.Models.MenuItem { Id = 5, Level = 1, ParentId = 4, Text = "Second Menu-SubMenu1", Url = Url.Action("Index", "Home"),IsSelected=true, HasChildren=false }
        };
        return menus;
    }
}

这是_layout.cshtml

@{
  var topLevel = ((IEnumerable<MVC3Stack.Models.MenuItem>)ViewBag.Menus).Where(x => x.Level == 0);
 }
 <ul id="menu">
     @foreach (var item in topLevel)
     {
        if (item.IsSelected)
        {

        <li>
            <a href="@Url.Action("Index", "Home")">@item.Text</a>
            @if (item.HasChildren)
            {
                var level1 = ((IEnumerable<MVC3Stack.Models.MenuItem>)ViewBag.Menus).Where(x => x.Level == 1 && x.ParentId == item.Id);
                <ul>
                @foreach (var item1 in level1)
                {
                if (item1.IsSelected)
                {
                     <li>
                        <a href="@Url.Action("Home", "Index")">@item1.Text</a>
                     </li>
                 }
              }

         </ul>
      }
   </li>
    }
  }   
</ul>

这可以为您提供一些关于如何实现这一点的指导。 注意:此解决方案将固定级别数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何按子类别创建动态子菜单 的相关文章

  • 中有样式表 吗?

    在内部链接 CSS 文件是一个坏主意吗 body 我读过 如果浏览器在外部找到另一个 CSS 文件 则它会被迫重新开始 CSS 渲染 head 只是因为它可能需要将样式应用于已经渲染的元素 另外 我认为 HTML 无法正确验证 我需要确认这
  • 在 mvc4 中创建通用 mvc 视图

    我以前也提过类似的问题 没有得到答案 如何创建一个通用的 mvc4 视图 该视图可以显示传递给它的模型列表或单个模型 模型可以是个人 组织或团体 无论传递给它的是什么 如果您正在寻找类似的东西 model MyViewModel
  • 如何对多行文本中的每一行应用填充?

    我已将背景颜色应用于 span 标签 也有左和右padding设置在它上面 问题是 padding仅适用于左侧 开始 和右侧 结束 span 而不是当文本换行时每行的左侧 开始 和右侧 结束 我该如何应用左和右padding to the
  • 在javascript中创建图像的缩略图方块(不丢失纵横比)

    我正在制作一个客户端拖放文件上传脚本作为书签 在上传之前 我使用 File API 将图像读取为 base64 格式并将其显示为缩略图 This is how my thumbnails look like I want them to l
  • PHP 文件上传帮助

    div align center div 这是我的代码
  • 选中复选框时如何向文本区域添加值

    我正在使用我刚刚在 SO 上找到的以下函数 该函数可以解决我的问题 只有一个问题是 我有一长串选择列表 当用户选中超过 3 4 个复选框时 某些文本或添加到文本区域的值不再可见 有没有什么方法可以让每次选中一个框时添加到文本区域的文本始终可
  • HTML5 视频:使用 Blob URL 流式传输视频

    我有一个 Blob 数组 实际上是二进制数据 我可以表达它 但是效率最高 我现在正在使用 Blob 但也许Uint8Array或者有什么会更好 每个 Blob 包含 1 秒的音频 视频数据 每秒都会生成一个新的 Blob 并将其附加到我的数
  • 当checked属性为false时,单选按钮默认被选中?

    我正在尝试生成单选按钮 有条件地检查检查的属性 如果该值存在于数据库中 则应选择它 否则检查的属性为 false 所以最初数据库中没有行 所有单选按钮的检查属性也为 false 但仍然在 UI 上选择 请参见下图 所以不知道这是默认行为还是
  • 如果在 中执行 document.write,为什么 DHTML 行为在 IE8 中不起作用?

    我们有一个 3rd 方 Web 应用程序 可以在 IE6 中运行 但不能在 IE8 中运行 示例代码如下 在IE6中会弹出 message from htc 消息 但在IE8中不会弹出 测试 html
  • 根据复选框和数据元素隐藏/显示表格行

    我想隐藏表中的行 因为我选中了复选框并且该数据元素在表中不正确 另一个实验 我还可以使用数据元素进行排序并按下拉列表排序 查看 tr 标签 价格 名称 评级 吗 div class filter list div
  • 使用 pkg:sjPlot 函数创建一个生成部分斜体单元格的数据框

    我正在尝试创建一个简单的数据表 其中 Coral taxon 列中的属名称为斜体 而 spp 列中的属名称为斜体 属名后面的部分不大写 我尝试使用 expression 函数对 Coral taxon 的每一行进行编码 但没有成功 sum
  • 如何动态突出显示网页上的字符串?

    我想创建带有 url 的页面 例如 http xyzcorp schedules 2015Aug24 Aug28 Jim Hawkins http xyzcorp schedules 2015Aug24 Aug28 Billy Bones
  • 将文本大小调整为矩形 在 Canvas HTML5 中调整大小

    我是 Canvas 新手 我正在创建一个网站 以在调整矩形大小时增加文本 我尝试了很多 但没有任何效果 实际上 我希望如果我仅按其宽度调整矩形大小 向左拉伸 向右拉伸 则仅应增加文本宽度而不是字体大小 我已经完成了字体大小 但发现增加孤立文
  • 如何使用 Angular JS 单击时将 html 模板附加到 div/指令?

    我有这种情况
  • 如何适应特定子元素的宽度?

    problem 我正在尝试创建一个技能表 我无法问下一个问题为什么 所以我创建了一个新帐户并询问 当前状态 我想将元素的宽度与 meter 也就是说 如何设定区块的标准 meter 子元素 在上面的 gif 中 img meter 我想要保
  • 计算文本选择的 xy 位置

    我正在尝试使用 DOM 元素创建自己的文本选择 是的 我的意思是当您在此元素中选择文本时 您会在文本后面看到蓝色背景 这个想法是停止默认行为 蓝色 并使用我自己的元素来完成工作 方法是找到选择的 xy 位置 然后放置绝对定位的元素 我希望能
  • 如何在表格列标题处垂直旋转文本

    我用过这个数据表 http www datatables net 在我的网页上 这是fiddle http jsfiddle net fxju7 2 链接我放置代码的地方 我想要 第一个数字第二个数字列应该垂直旋转 我已经做到了 但是 问题
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • 如何使用Python保存“完整的网页”而不仅仅是基本的html

    我正在使用以下代码来使用 Python 保存网页 import urllib import sys from bs4 import BeautifulSoup url http www vodafone de privat tarife r
  • 强制输入数字小数位

    我想强制

随机推荐