asp.net cms页面子菜单不工作
本文关键字:菜单 工作 面子 net cms asp | 更新日期: 2023-09-27 18:29:22
我在我的网站上创建子菜单时遇到问题
我有2个MSSQL数据库表:
WWW
- WWW_ID
- CAT_ID->FK到类别
- WWW_NAME
类别
- CAT_ID
- CAT_NAME
- 分类排序
我的前臂
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以及何时需要重置字符串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>");
}