繁体   English   中英

asp.net cms页面子菜单不起作用

[英]asp.net cms page submenu not working

我在网站上创建子菜单时遇到问题

我有2个MSSQL数据库表:

万维网

  • WWW_ID
  • CAT_ID - > FK到类别
  • WWW_NAME

分类

  • CAT_ID
  • CAT_NAME
  • CAT_SORTORDER

我的foreach

    sb.Append("<ul class=\"Menu\">");
    foreach (WWW item in WWW.Fetch(null, null, null))
    {
        if (item.Active)
        {
            //All pages that doesnt have a categorie
            if (!item.Categorie.ID.HasValue)
            {
                sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", item.Name, item.ID.ToString());
            }
            //All pages that have a categorie
            if (item.Categorie.ID.HasValue)
            {
                //Split different categories.
                if (CAT != item.Categorie.Name)
                {
                    CAT = item.Categorie.Name;
                    sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", item.Categorie.Name, item.ID.ToString());
                }
            }
        }
        CAT = "";
    }
    sb.Append("</ul>");

我失去了我需要创建开始UL和关闭UL的地方,我什么时候需要重置我的String CAT。 谢谢

我不确定菜单的结构是什么,因为你没有一个很好的例子。 但是,如果您正在执行以下操作:

<ul>
    <li>Category</li>
    <li>Catefory
        <ul>
            <li>Page</li>
        </ul>
    </li>
<\ul>

那么你需要做一些事情:

sb.Append("<ul class=\"Menu\">");
foreach (Categories category in Categories.Fetch(null, null, null))
{
    if (category.Active)
    {
        sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a>", category.Name, category.ID.ToString());
        var pages = WWW.Fetch(p => p.Categorie.ID.Equals(category.ID));
        if(pages.Any()) {
            sb.Append("<ul>");
            foreach(WWW page in pages) {
                sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", page.Name, page.ID.ToString());
            }
            sb.Append("</ul>");
        }
        sb.Append("</li>");
    }
}
sb.Append("</ul>");

我意识到这不太符合您的需求,但应该是菜单背后逻辑的一个很好的例子。 如果您可以填写类别和WWW表如何表示数据的更多细节,以及您的预期输出的示例,我相信我可以附加更具体的示例。

只需创建一个函数并将上面的代码放在该函数中,并在项包含类似值时递归调用它:

public void NestedMenuCalling(List<Categorie> WWW)
    {
        sb.Append("<ul class=\"Menu\">");
        foreach (WWW item in WWW.Fetch(null, null, null))
        {
            if (item.Active)
            {
                //All pages that doesnt have a categorie
                if (!item.Categorie.ID.HasValue)
                {
                    sb.AppendFormat("<li><a href=\"page?id={1}\">{0}</a></li>", item.Name, item.ID.ToString());
                }
                //All pages that have a categorie
                if (item.Categorie.ID.HasValue)
                {
                    //Split different categories.
                    if (CAT != item.Categorie.Name)
                    {
                        CAT = item.Categorie.Name;
                        NestedMenuCalling(item.Categorie);
                    }
                }
            }
            CAT = "";
        }
        sb.Append("</ul>");
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM